実現したいこと
ダンボールシートの10更新ボタンを押したら、No.10の範囲(B:F)の9行目から下の値(B9:F25)を、送信履歴シートのD:Hに貼り付けたい
・”9行目から下の値(B9:F25)”は、その時によって行の増減があります
・D列の製品名は空白の場合もあります
・ダンボールシートには10だけでなく右隣の37のように同じ表が連なっています
まだGASは組めていないが、送信履歴シートの
Aに送信(ボタンを押した)日付
BにダンボールシートA1の値(今回はダンボール)
CにダンボールシートのNoの値(今回は10)
も送信できるようにしたい
発生している問題・分からないこと
・処理に5分もかかってしまう
該当のソースコード
function getCurrentRegion() { // アクティブなシートを取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var jo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ダンボール'); var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('送信履歴'); var purasu1 = sheet1.getLastRow() + 1; //すでにセル内にあるデータを上書きしないように1を足す console.time("Inefficient Loop3"); // 基準セルを指定 (ここではA1セル) var startingCell = jo.getRange("b9"); //b9が基準 //B9 var startRow = startingCell.getRow();//行 var startColumn = startingCell.getColumn();//列 console.timeEnd("Inefficient Loop3"); console.time("Inefficient Loop"); // 現在のシートのデータ範囲を取得 var data = jo.getDataRange().getValues();//ダンボールのセル範囲の値(values)を取得 console.timeEnd("Inefficient Loop"); console.time("Inefficient Loop6"); // 空白セルにぶつかるまで行を拡張する var lastRow = startRow;//行 console.timeEnd("Inefficient Loop6"); console.time("Inefficient Loop5"); while (lastRow <= sheet1.getLastRow() && data[lastRow - 1][startColumn - 1] !== "") { lastRow++;}//b9の行と送信履歴の最後の行大きさ判断、データ範囲の最終行の一個したみて空白確認繰り返す console.timeEnd("Inefficient Loop5"); console.time("Inefficient Loop2"); //列は固定 var lastColumn = startColumn+5;//b9から+5列のところ console.timeEnd("Inefficient Loop2"); console.time("Inefficient Loop8"); var currentRegion = jo.getRange(startRow, startColumn, lastRow - startRow, lastColumn - startColumn).getValues(); //上の値をもらう console.timeEnd("Inefficient Loop8"); console.time("Inefficient Loop9"); var lastRow2 = sheet1.getLastRow();//送信履歴の最初から最後の行 console.timeEnd("Inefficient Loop9"); console.time("Inefficient Loop3"); sheet1.getRange(lastRow2+1, 4, currentRegion.length, currentRegion[0].length).setValues(currentRegion);//送信履歴の最終行にあげる console.timeEnd("Inefficient Loop3"); // 結果をログに表示 Logger.log(currentRegion); }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
動作は正常ですが、処理時間は変わらなかった
補足
特になし
回答2件
あなたの回答
tips
プレビュー