2017-02-18 6 views
0

"Sheet1"と "Sheet2"という名前の2枚のスプレッドシートがあります。私は次の使用例は、シート1に、ブラウザに最初の範囲を選択Google Script getActiveRange

function foo(){ 

var oSheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"), 
oSheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); 
Logger.log(oSheet1.getActiveRange().getValues()); 
Logger.log(oSheet2.getActiveRange().getValues()); 

} // foo 

、その後、Sheet2の上でクリックして、最初の異なる第二の範囲を、選択します。私は、メニュー項目をクリックする上で実行して、スクリプトを持っています。メニュー項目foo()をクリックします。ロガーはoSheet1とoSheet2で同じ結果を表示します。どうして?そして、私はどのように非アクティブシート上の選択範囲を得ることができますか?ここで

は私が間違っていたと推測フルアクセスhttps://docs.google.com/spreadsheets/d/1lfQl9H1PW2lKL-4YJir7uxl-ZMnDR6Zn1_FndG07WGY/edit#gid=1264703349

+0

まず距離画像 - https://i.stack.imgur.com/GBdtF.png第2の範囲の画像 - https://i.stack.imgur.com/Qcivq.png – roskoshinsky

+0

それが動作するかどうかあなたは ';' 1行目のセミコロンと2行目の先頭のvar。もちろん、ログを見る必要があります.2次元配列を2つ探してみましょう。だからあなたのスプレッドシートのようには見えません。しかし、この方法でデータを移動することには慣れておくべきです。なぜなら、少なくとも1桁は速く、細胞を乱すからです。 – Cooper

+0

クーパー、意味する 関数foo(){ var oSheet1 = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName( "Sheet1"); var oSheet2 = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName( "Sheet2"); Logger.log(oSheet1.getActiveRange()。getValues()); Logger.log(oSheet2.getActiveRange()。getValues()); SpreadsheetApp.getUi()。alert(oSheet1.getActiveRange()。getValues()); SpreadsheetApp.getUi()。alert(oSheet2.getActiveRange()。getValues()); } // foo - セミコロンで状況を保存した場合、私は驚くでしょう。そして、このケースログは、異なるシートの選択肢を用いて2つの同じ結果を示す。 – roskoshinsky

答えて

0

を持つテーブルです。それは動作していたように見えましたが、機能が動作するときにシートの上に座っていたシートでアクティブな範囲を取っていました。私は以下のようなアクティブな範囲を避けて試してみました。私はすべてのアスタリスクでSheet1とSheet2を配置したので、正しいデータであることを保証するために各データセットの先頭を見ることができました。しかし、各シートに選択された範囲があるにもかかわらず、この機能は選択されたデータを上のシート(どちらがアクティブでも)で繰り返し、エラーを報告しません。

function foo(){ 

var oSheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getDataRange(); 
var oSheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getDataRange(); 
Logger.log('**************************Sheet1**********************' + oSheet1.getValues()); 
Logger.log('********************Sheet2**************************' + oSheet2.getValues()); 

} // foo 
+0

このようなことをしたい場合は、多段階操作で実行できます。まず、最初のページで範囲を選択し、その情報をPropertiesService.DocumentPropertiesに格納し、次に2番目の範囲を取得して格納し、それらの格納された範囲を使用してデータを収集します。 – Cooper