実現したいこと
検索機能のコードを、ようやくエラーが起こらずに、実行することができるようになったのですが、検索結果が多いと何十秒もかかってしまい、困っています。
どうしたら処理速度を早くできますでしょうか?
御教唆いただけると幸いです。よろしくお願いします。
前提
”データ”シートに備品等が入力されています。
A列にシート名、B列に保管場所、C列以降は品名が横に入力されています。
該当のソースコード
function allSaerch() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); var sheetD = spreadsheet.getSheetByName("データ"); try{ var findWord = sheet.getRange("AG2").getValue(); var textFinder = sheetD.createTextFinder(findWord); var cells = textFinder.findAll(); var ary =[]; var ui = SpreadsheetApp.getUi(); if(cells.length == 0 ){ var noResult = "検索結果は" + cells.length + "件です。"; var comment = "事務職員等に" + findWord + "について聞いて下さい。"; ui.alert(noResult,comment); }else{ for(let i =0; i < cells.length; i++){ var hitNums = cells[i].getA1Notation(); var fixName = sheetD.getRange(hitNums).getValue(); var shName = sheetD.getRange(hitNums).getNextDataCell(SpreadsheetApp.Direction.PREVIOUS); var sheetName = shName.getValue(); var stPlace = shName.offset(0,1).getValue(); ary.push(fixName + "ー" + sheetName + "ー" + stPlace ); } ary.unshift("品名 - シート名 - 保管場所") var place = ary.join("\n"); var title = "検索結果は" + cells.length + "件です。"; ui.alert(title,place,ui.ButtonSet.OK); } }catch(e){ Browser.msgBox("消耗品、備品等を入力して下さい。"); } }

0 コメント