7

私は今日、Google Apps Script をいじっており、いくつかのカスタム スプレッドシート関数をコーディングしようとしています。いくつかの検索を行いましたが、クエリに対する答えが見つかりません。

Google スプレッドシートでは、次のようにスプレッドシートのセルで ImportRange を使用できることを知っています。

=ImportRange(spreadsheet_key;sheet!range_of_cells)

私の質問は、Google Apps Script で同様のことを行うことは可能ですか。

別のスプレッドシートのシートからセルの範囲をインポートしたい (スクリプトが存在するスプレッドシートのシートではない)。

4

3 に答える 3

5

はい、これは完全に可能です。呼び出しSpreadsheetApp.openByIdて、目的のシートと範囲を通常どおりに取得する必要があります。

ドキュメントを見てください:range.getValues()そしてrange.setValues()非常に基本的なGASメソッドであり、かなりよく説明されています。

チュートリアルも読んでください。

于 2012-06-21T18:07:17.457 に答える
3

どうやら Google は、その無限の叡智により、openById および同様の関数の動作を変更したようです。カスタム関数のコンテキストでは許可されなくなりました。

詳細については、 https://code.google.com/p/google-apps-script-issues/issues/detail?id=5174を参照してください。

回避策として IMPORTRANGE を使用することを提案していますが、前述のように、これはセル内で呼び出す必要があります。

私たちの解決策は、データ セットが小さかったため、シートで IMPORTRANGE を使用し、取得したデータをカスタム関数に渡すことでした。この情報がお役に立てば幸いです。

于 2015-07-01T21:23:55.153 に答える
1

私は最近これをする必要がありました。これは私が思いついたもので、スプレッドシートのキーと範囲を ahab のmyImportRange関数にハードコーディングするだけです

// to be used in the spreadsheet like so:  = myScriptedImportRange( GoogleClock() )
// no need to include key or range because they are in the script here
// 
// the third parameter - GoogleClock() - triggers an automatic update every minute.
// updated 2011-07-17 (ahab): better regex to strip sheetname of *outer* single quotes
// updated 2013-01-27 (ben) to hard-code key and range 
function myScriptedImportRange(  ) { 
 var key = "PUT YOUR DATA_SPREADSHEET_ID IN HERE"
 var sheetrange = "PUT YOUR SHEET AND CELL RANGE IN HERE"
 var shra = sheetrange.split("!") ;
 if (shra.length==1) shra[1]=shra[0], shra[0]="";  

 var sheetstring = shra[0].replace( /^'(.*)'$/g , "$1") // was: replace( /'/g , "") ; updated 2011-07-17 (ahab)
 var rangestring = shra[1] 

 var source = SpreadsheetApp.openById( key )    
 if ( sheetstring.length==0 ) sheet = source.getSheets()[0] ;
 else sheet = source.getSheetByName( sheetstring ) ;

 return  sheet.getRange( rangestring ).getValues(); 
}

私の場合、一連のプライベート シート、レギュラーmyImportRangeおよび VMERGE と SQL を使用してプライベート シートからの選択を中間シートに結合する中間シート、および 1 つのセルを含むパブリック シートがあります。= myScriptedImportRange( GoogleClock() )

ここにも同様のアプローチがあることに注意してください: https://stackoverflow.com/a/11857014

ImportRange元のワークブックが開いていない場合、関数および関連する関数には、インポートされたデータが表示されないという問題がよくあることにも注意してください。これを回避する簡単な方法は、 https ://stackoverflow.com/a/11786797 のコメントで説明されています。

于 2013-01-28T08:34:05.183 に答える