前提
スプレッドシートで特定の文字列が含まれる行を削除する関数を作成しました。
ですが6分間でタイムアウトしてしまうことを知らず、文字列を増やしたところタイムアウトしてしまうようになりました。
調べたところおそらくセルごとに操作を繰り返しているからだとわかりました。ですがまとめてセルの削除などをする場合どのようにすれば良いのか全く見当がつきません。。。
どのようにすれば良いのか。この様な方法がある。というのを教えていただけないでしょうか。
どうかよろしくお願いいたします。
実現したいこと
- 一回ずつではなくまとめてセルを変更できるようにしたい。
- スプレッドシートの行や削除する文字列が増えてもタイムアウトしなくなるようにしたい。
発生している問題・エラーメッセージ
- 行や文字列が増えるとタイムアウトしてしまう。
該当のソースコード
JavaScript
1 2/** 3 * 指定の文字列を含む行を削除します 4 * @param {string} sheetName - 列を削除したいシート名 5 * @param deletedWord.<string> - 削除したい文字列 6 * @param {string} column - 対象の列 7*/ 8 9function delete_Row(sheetName = 'シート1', deletedWord = [], column = 'A') { 10 11 const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); 12 const sheet = spreadSheet.getSheetByName(sheetName); 13 const lastRow = sheet.getLastRow(); 14 const lastColumn = sheet.getLastColumn(); 15 const array = deletedWord 16 17 Logger.log("禁止語句を含む行を削除します") 18 Logger.log("禁止語句の数は%sつです", String(deletedWord.length)) 19 20 for (const i in array) { 21 22 Logger.log("%s/%sの禁止語句を削除します", String(Number(i) + 1), String(deletedWord.length)) 23 for (let j = lastRow; j > 1; j--) { 24 let range = sheet.getRange(column + j); 25 let value = range.getDisplayValue(); 26 if (value.indexOf(array[i]) != -1) { 27 let start_row = j; 28 let num_row = 1; 29 sheet.deleteRows(start_row, num_row); 30 }; 31 }; 32 }; 33 34 Logger.log("禁止語句の削除が完了しました") 35 36} 37
試したこと
調べたりしたのですがどのようにすれば良いのか見当がつきません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/30 08:12