前提
スプレッドシートで特定の文字列が含まれる行を削除する関数を作成しました。
ですが6分間でタイムアウトしてしまうことを知らず、文字列を増やしたところタイムアウトしてしまうようになりました。
調べたところおそらくセルごとに操作を繰り返しているからだとわかりました。ですがまとめてセルの削除などをする場合どのようにすれば良いのか全く見当がつきません。。。
どのようにすれば良いのか。この様な方法がある。というのを教えていただけないでしょうか。
どうかよろしくお願いいたします。
実現したいこと
- 一回ずつではなくまとめてセルを変更できるようにしたい。
- スプレッドシートの行や削除する文字列が増えてもタイムアウトしなくなるようにしたい。
発生している問題・エラーメッセージ
- 行や文字列が増えるとタイムアウトしてしまう。
該当のソースコード
/** * 指定の文字列を含む行を削除します * @param {string} sheetName - 列を削除したいシート名 * @param deletedWord.<string> - 削除したい文字列 * @param {string} column - 対象の列 */ function delete_Row(sheetName = 'シート1', deletedWord = [], column = 'A') { const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const sheet = spreadSheet.getSheetByName(sheetName); const lastRow = sheet.getLastRow(); const lastColumn = sheet.getLastColumn(); const array = deletedWord Logger.log("禁止語句を含む行を削除します") Logger.log("禁止語句の数は%sつです", String(deletedWord.length)) for (const i in array) { Logger.log("%s/%sの禁止語句を削除します", String(Number(i) + 1), String(deletedWord.length)) for (let j = lastRow; j > 1; j--) { let range = sheet.getRange(column + j); let value = range.getDisplayValue(); if (value.indexOf(array[i]) != -1) { let start_row = j; let num_row = 1; sheet.deleteRows(start_row, num_row); }; }; }; Logger.log("禁止語句の削除が完了しました") }
試したこと
調べたりしたのですがどのようにすれば良いのか見当がつきません。
まだ回答がついていません
会員登録して回答してみよう