4

Google フォームで送信された情報と、IMPORTRANGE 関数を使用して Google スプレッドシートに取り込まれた情報を比較する Google Apps Script があります。手動で実行するとスクリプトは完全に機能しますが、フォーム送信トリガーから実行すると、IMPORTRANGE を使用してセルから正しい情報を取得していないと報告されます。

インポート範囲を強制的に更新するために追加できるクイック関数があるように、これを回避する方法はありますか?

すでに最大 10 分の待機時間を追加しようとしましたが、結果は変わりませんでした。

4

1 に答える 1

13

問題は、関数 like がどのように機能するかimportRangeです。実際には、セキュリティ ホールを回避するために、それらを使用してログインしているユーザー アカウントと同じアクセス/許可が必要です (所有しているスプレッドシートの編集者が、共有していない他のスプレッドシートにアクセスすることを想像してください)。

このため (少なくとも私はそう思います)、これらの数式は、スプレッドシートを開いたときにのみ評価されます。スクリプトを閉じて、スクリプトをトリガーで実行したままにすると、期待されるセルで結果が見つかりません。

これに対する簡単な回避策は、スクリプト自体を使用してデータを取得し、使用を終了することimportRangeです。それはとても簡単です、例えば

var values = SpreadsheetApp.openById('external-spreadsheet-key').
  getSheetByName('Sheet1').getRange('A1:D100').getValues();
SpreadsheetApp.getActive().getSheetByName('DestSheet').
  getRange(1,1,values.length,values[0].length).setValues(values);

明らかに、スプレッドシートのキー、シートの名前、および範囲は、ここでは単なる例です。

于 2012-08-08T02:54:07.107 に答える