2017-01-09 5 views
0

名前の最初のペア(A2)と電子メール(B2)を別のシートからコピーして、メインシートに貼り付けようとしています。メインシートに"範囲の座標または寸法が無効です。"エラーが発生しました

、Iは最初の値が貼り付けられた後の最初の空の行を取得するために、)それらは、他の下一方をコピーし、私はgetlastRowを(使用して考える必要があります。

メインシートに特定の順序で値を貼り付けることができたとしても、この時点ではやります。

私は私のスクリプトを実行すると、私は次のエラーを取得する - 範囲の座標や寸法が無効である

私のコードは以下の通りです。

function myFunctions() { 
var sourceSpreadsheet = SpreadsheetApp.openById(); // source spreadsheet 
var sheets = sourceSpreadsheet.getSheets(); // array of sheets 

var targetSpreadSheet = SpreadsheetApp.openById(); 
var targetSheet = targetSpreadSheet.getSheetByName('Main'); // 

for(var i=1; i < sheets.length;i++){ 
    var temp = i; 
    var tempval = sheets[i].getRange(2,1,1,2).getValues(); 

    var lastrow = ts.getLastRow(); 
    var lastcol = ts.getLastColumn(); 

    targetSheet.getRange(lastrow,1,1,lastcol).setValues(tempval[temp]); 
    } 

} 

入力があった場合はご連絡ください。

ありがとうございました!

+0

あなたのコードは何ですか?そこに 'targetSheet'があるように見えます。 – FTP

+0

こんにちは、 はい、 'ts'はtargetSheetですが、名前を変更しませんでした。 –

答えて

1
  1. "ts"は定義されていません。

  2. "tempval"は "A2:B2"の2次元配列です。そして、長さは1です。したがって、 "for"のループが1で始まり、Arrayの範囲外であることを示します。

  3. "setValues"を使用する配列は2次元配列です。 "tempval [temp]"は1次元の配列です。したがって、エラーが発生します。

  4. "getRange"のドキュメントは次のとおりです。 https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer)

  5. これについては、おそらくあなたが望むかもしれませんが。 "lastrow"と "lastcol"はデータの最後の行と列です。したがって、データは「ターゲットシート」の最後の行データに上書きされます。

上記に基づいて、変更されたスクリプトは以下のとおりです。

function myFunctions() { 
    var sourceSpreadsheet = SpreadsheetApp.openById(); // source spreadsheet 
    var sheets = sourceSpreadsheet.getSheets(); // array of sheets 
    var targetSpreadSheet = SpreadsheetApp.openById(); 
    var targetSheet = targetSpreadSheet.getSheetByName('Main'); // 
    for(var i=1; i < sheets.length;i++){ 
    // var temp = i; 
    var tempval = sheets[i].getRange(2,1,1,2).getValues(); 
    var lastrow = targetSheet.getLastRow(); // Is ts targetSheet? 
    var lastcol = targetSheet.getLastColumn(); // Is ts targetSheet? 
    targetSheet.getRange(lastrow + 1, lastcol + 1, 1, 2).setValues(tempval); 
    } 
} 

欲しいものは何ですか?

+0

こんにちは、 ありがとうございます。 提供した情報に基づいて、私が探していた解決策を見つけることができました。 私は上記のように、私は複数のシートから同じ値をコピーして、メインシートに1つずつ追加しようとしています。 もう一度おねがいします! –

+0

問題がある場合は、教えてください。 – Tanaike

関連する問題