16

Google サイトで Google Apps Script を作成しており、Google スプレッドシートの 2 つの異なるタブで提供されるデータを使用しようとしています。ドキュメントから理解したと思ったことから、メソッドをSpreadsheetApp使用するだけで、サイトスクリプトのクラスで使用可能なすべてのメソッドを使用できましたopenById()

とにかくここに私がやろうとしたことがあります

function doGet(e) {

    var doc = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE).getActiveSheet();
    SpreadsheetApp.setActiveSheet(doc.getSheetId()[1]);

    //....
}

エラーが発生します

メソッド setActiveSheet(. が見つかりません (4 行目)

私はこのリンクから自分の仕事を引っ張っています: Google スプレッドシートにデータを保存する、およびユーザー インターフェイスの構築の下にリストされている Ui サービス セクション。

これらの2行で私が間違っていることを見ている人はいますか?

4

4 に答える 4

25

setActiveSheet は、UI によって表示されるスプレッドシート (ブラウザーで開いたスプレッドシート内のシート) でのみ使用する必要があります。

SpreadsheetApp.openById を使用すると、スプレッドシートを開いてそのデータにアクセスできますが、ブラウザで開きません。UI はありません。

https://developers.google.com/apps-script/class_spreadsheetapp?hl=es-ES#openByIdでこのコメントを見つけました:

// The code below opens a spreadsheet using it's ID and gets the name for it.
// Note that the spreadsheet is NOT physically opened on the client side.
// It is opened on the server only (for modification by the script).
var ss = SpreadsheetApp.openById("abc1234567");

一部の例では、スクリプトがスプレッドシートで実行されていることを前提としています。独自のユーザー インターフェイスを持つ必要があるサービスとしてスクリプトを実行しているため、それはあなたのケースではありません。

于 2012-07-30T20:46:19.050 に答える
7

@ megabyte1024は構文エラーに対処していると思いますが、@ YoArgentinaへのコメントに答えて:

スプレッドシート内で実行されていないサービスを介して、さまざまなタブのデータにアクセスする方法を知っていますか?

この種の助けはありますか?

var ss = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE);
var sheets = ss.getSheets();
// the variable sheets is an array of Sheet objects
var sheet1A1 = sheets[0].getRange('A1').getValue();
var sheet2A1 = sheets[1].getRange('A1').getValue();
于 2012-07-30T22:16:07.713 に答える
2

各シートに個別にアクセスする必要があります。

var ss = SpreadsheetApp.openById(SPREADSHEET_ID_GOES_HERE);
var sheet = ss.getSheets()[0]; // "access data on different tabs"
ss.setActiveSheet(sheet);
于 2012-07-30T22:10:33.033 に答える
1

この 2 行には、少なくとも 1 つの問題があります。1 つ目は、setActiveSheetメソッドのパラメーターが Sheet クラス オブジェクトであり、getSheetId メソッドが整数値を返すことです。ところで、このメソッド (getSheetId) は文書化されていません。2 番目の問題は、SpreadsheetApp にアクティブなスプレッドシートがない場合に発生する可能性があります。この場合、「最初にアクティブなスプレッドシートを選択してください」というメッセージが表示されます。エラー。SpreadsheetApp.setActiveSpreadsheetメソッドを使用して、アクティブなスプレッドシートを設定します。

于 2012-07-30T20:52:59.573 に答える