スプレッドシートでのGASのコードについての質問です。 GASを使ってテキスト検索ができるというのが以下のサイトに載っていました。 https://84office.jp/google-sheet-text-search/ 上記サイトのコードでは検索キーワードが含まれているセルを表示する、となっていますが、検索キーワードが含まれているセルと、その右のセル3つまでの表示というコードに書き換えるには、どこをどのようにすればよいのでしょうか? (A1のセルにキーワードが含まれていた場合、検索結果としてA1,B1,C1,D1のセルを表示したい) 以下がコードです。 function searchAcrossSheets() { // 検索するキーワードを設定 var keyword = Browser.inputBox("検索キーワードを入力してください"); // 現在のスプレッドシートを取得 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 新しいシートを作成し、検索結果を保存 var resultSheet = spreadsheet.getSheetByName("検索結果"); if (resultSheet) { spreadsheet.deleteSheet(resultSheet); } resultSheet = spreadsheet.insertSheet("検索結果"); resultSheet.appendRow(["シート名", "セル", "値"]); // ヘッダーのスタイルを設定 var headerRange = resultSheet.getRange(1, 1, 1, 3); headerRange.setHorizontalAlignment("center").setBackground("#b6d7a8"); // B列全体をセンタリング resultSheet.getRange(1, 2, resultSheet.getMaxRows()).setHorizontalAlignment("center"); // 列幅の調整 resultSheet.setColumnWidth(1, 150); // シート名 resultSheet.setColumnWidth(2, 100); // セル resultSheet.setColumnWidth(3, 300); // 値 // 全てのシートを取得 var sheets = spreadsheet.getSheets(); // 各シートをループして検索 sheets.forEach(function(sheet) { if (sheet.getName() === "検索結果") return; // 検索結果シートはスキップ var range = sheet.getDataRange(); var values = range.getValues(); for (var i = 0; i < values.length; i++) { for (var j = 0; j < values[i].length; j++) { if (values[i][j].toString().indexOf(keyword) !== -1) { // 検索キーワードが見つかった場合、結果シートに追加 var cell = range.getCell(i + 1, j + 1); var cellLink = '=HYPERLINK("' + spreadsheet.getUrl() + '#gid=' + sheet.getSheetId() + '&range=' + cell.getA1Notation() + '", "' + cell.getA1Notation() + '")'; resultSheet.appendRow([sheet.getName(), cellLink, values[i][j]]); } } } }); Browser.msgBox("検索が完了しました。結果は '検索結果' シートに表示されています。"); }
Excel