ImportRange
や(Apps Script のカスタム数式も)などの一部のスプレッドシートの数式はImportXml
、スプレッドシートにログインしているユーザーがいる場合にのみ評価されます。これらの機能には、評価されるアカウントが必要なようです。たとえば、ログインしているアカウントでは、インポートされる範囲にアクセスできる必要があります。このスプレッドシートをソースでimportRange
はなく誰かと共有する場合、この人がこのスプレッドシートを表示しているときに、関数は機能しません (スプレッドシートも使用していて、数式が既に評価されていない限り)。importRange
importRange
要するに、この数式を使用して、時間駆動型 (または他のユーザーのログインを必要としない他のトリガー) でトリガーされるスクリプトを使用して、スクリプトがこのデータを読み取ることができると期待することはできません。
ただし、回避策は非常に簡単です。importRange
スクリプト内で関数が行うことを実行してください! 例えば
var source = SpreadsheetApp.openById('source-spreadsheet-key');
var data = source.getSheetByName('List').getRange('I6:AT500').getValues();
//then save it somewhere
var s = Spreadsheet.getActive().getSheetByName('hidden-import');
s.getRange('I6:AT500').setValues(data);
SpreadsheetApp.flush(); //force the data to be written
//so all the other formulas on your spreadsheet get updated with the new data
query
スクリプトが模倣するのが難しいや などのすべての「論理」式は、スプレッドシートに残すことができますが、直接vmerge
ネストする代わりに、私が発明したこの「hidden-import」シートを参照してください。importRange
[編集]
空でない行のみをコピーするには、次のようにします。
var data = SpreadsheetApp.openById('source-spreadsheet-key').
getSheetByName('List').getDataRange().getValues();
Spreadsheet.getActive().getSheetByName('hidden-import').
getRange(1,1,data.length,data[0].length).setValues(data);