一致したデータの右隣りのURLを開く
別フォルダの特定のスプレッドシートの特定のシートのA列の特定キーワードとアクティブシートのA列の特定キーワードと一致した場合、別シートのA列の右隣りのセルのURLを開く
function searchAndOpenUrl() {
// 対象のフォルダのIDを指定
var folderId = "folderId";
// 対象のスプレッドシートのIDを指定
var spreadsheetId = "spreadsheetId";
// 対象のシートの名前を指定
var sheetName = "sheetName";
// 検索するキーワードを指定
var searchKeyword = "keyword";
// アクティブシートを取得
var activeSheet = SpreadsheetApp.getActiveSheet();
// アクティブシートのA列を取得
var activeColumnA = activeSheet.getRange("A1:A").getValues().flat();
// 対象のスプレッドシートを取得
var targetSpreadsheet = SpreadsheetApp.openById(spreadsheetId);
// 対象のシートを取得
var targetSheet = targetSpreadsheet.getSheetByName(sheetName);
// 対象のシートのA列を取得
var targetColumnA = targetSheet.getRange("A1:A").getValues().flat();
// 対象のシートの右隣の列を取得
var targetColumnB = targetSheet.getRange("B1:B").getValues().flat();
// 検索処理
var urls = [];
for (var i = 0; i < activeColumnA.length; i++) {
if (activeColumnA[i] == searchKeyword) {
var targetIndex = targetColumnA.indexOf(searchKeyword, i);
if (targetIndex != -1) {
urls.push(targetColumnB[targetIndex]);
}
}
}
// URLを開く
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
if (url) {
var file = DriveApp.getFileById(url);
var folder = DriveApp.getFolderById(folderId);
folder.addFile(file);
folder.removeFile(file);
var url = file.getUrl();
var html = "<script>window.open('" + url + "', '_blank');</script>";
var userInterface = HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModalDialog(userInterface, "Opening URL...");
}
}
}
解説
folderId
:検索対象のスプレッドシートが保存されているフォルダのIDspreadsheetId
:検索対象のスプレッドシートのIDsheetName
:検索対象のシートの名前searchKeyword
:検索するキーワード
別のスクリプト
Browser.msgBox
を使用してURLを開くためのリンクを表示していますが、SpreadsheetApp.openByUrl
やDocumentApp.openByUrl
を使用して、別のファイルを開くこともできます。
function findAndOpenSheet() {
// 対象のフォルダID
const folderId = 'フォルダIDをここに入力';
// 対象のシート名
const sheetName = 'シート名をここに入力';
// 検索するキーワード
const keyword = '検索するキーワードをここに入力';
// 検索する範囲の指定
const searchRange = SpreadsheetApp.getActiveSheet().getDataRange();
const searchValues = searchRange.getValues();
// 対象フォルダ内の全てのファイルを検索
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
while (files.hasNext()) {
const file = files.next();
const spreadsheet = SpreadsheetApp.openById(file.getId());
const sheet = spreadsheet.getSheetByName(sheetName);
// 指定したシートからA列の値を取得して、キーワードと一致するかどうかを判定
const sheetValues = sheet.getRange('A:A').getValues();
for (let i = 0; i < sheetValues.length; i++) {
if (sheetValues[i][0] === keyword) {
// キーワードが一致した場合、隣接するセルに記載されたURLを取得して開く
const url = sheet.getRange(i+1, 2).getValue();
if (url) {
Browser.msgBox('以下のURLを開きます:\n' + url);
return;
}
}
}
}
Browser.msgBox('一致するデータが見つかりませんでした。');
}
解説
- 検索するキーワードを取得するために、アクティブシートのA列を取得します。
- 指定されたフォルダ内にあるすべてのスプレッドシートを検索します。
- 各スプレッドシート内の指定されたシートからA列の値を取得し、キーワードと一致するかどうかを判定します。
- キーワードが一致した場合、隣接するセルに記載されたURLを取得して開きます。
コメント