前提・実現したいこと
別ファイルのスプレッドシートに内に14シートがあります。
左から3つ目から14つ目までのシートからB列、E列、G列、H列、AA列の3行目~最終行が欲しいデータです。
アクティブシートにB列~AA列までコピーしたものを貼り付けて不要な列を削除するコードを書いたのですが、
エラーで途中で止まります。
どこと直したらいいのでしょうか?知恵をお貸しください。
発生している問題・エラーメッセージ
エラーメッセージ 範囲の行数には 1 以上を指定してください。(行 23、ファイル「データ表示」) ### 該当のソースコード
GoogleAppsScript
1function dateOpen() { 2 3 var sh2 = SpreadsheetApp.getActiveSpreadsheet(); 4 var sh1 = SpreadsheetApp.openById("XXXXXXXXXXXXXXXXX")//コピー元 5 6 var sheet2 = sh2.getSheetByName('データ'); //コピー先 7 var lastRow = sheet2.getLastRow();//コピー先シートA2以降クリア 8 var lastCol = sheet2.getLastColumn(); 9 if(sheet2.getRange("A2") != ""){ 10 sheet2.getRange(2, 1, lastRow-1, lastCol-1).clearContent(); 11 } 12 var copy_column_range = 26 //コピーする列数 13 //全てのシートをデータシートにコピー 14 var c_sheet_cnt = sh1.getSheets().length; //コピーするシート数 15 var last_l_row = 4; //3行目からコピー 16 var dt_all_sheet = []; // 全てのシートのデータの配列 17 //全てのシートのデータを配列に格納してから書き出し 18 19 for (var i=2;i<c_sheet_cnt;i++){ 20 var sheet = sh1.getSheets()[i]; 21 var new_l_row = sheet.getLastRow(); //各シートの最終行を取得 22 23 var copyValue = sheet.getRange(2,3,new_l_row-1,copy_column_range).getValues(); 24 var dt_all_sheet = dt_all_sheet.concat(copyValue); 25 var last_l_row = last_l_row + new_l_row-1; 26 } 27 //sheet内容を書き出し 28 29 sheet2.getRange(2,1,dt_all_sheet.length,copy_column_range).setValues(dt_all_sheet) 30 sheet2.deleteColumns(2,2);元シートのB列 31 sheet2.deleteColumns(3,1);元シートのE列 32 sheet2.deleteColumns(5,18);元シートのG、H、AA列 33 34 35} 36
### 試したこと 最初はエラーが起きず、表示されたのですがなぜかエラーがでるようになりました。 ”var copyValue = sheet.getRange(2,3,new_l_row-1,copy_column_range).getValues();” がエラー箇所なので、2,3を1,1にしたのですが変わりません。 ### 補足情報(FW/ツールのバージョンなど) こちらの質問を参考に作成いたしました。 https://teratail.com/questions/112018

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/02 03:59
2019/07/02 11:24