例文を使って繰り返し業務を時短

【GAS】別シートのセルに表記しているURLのリンクを開く

【GAS】別シートのセルに表記しているURLのリンクを開く GAS

一致したデータの右隣りの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:検索対象のスプレッドシートが保存されているフォルダのID
  • spreadsheetId:検索対象のスプレッドシートのID
  • sheetName:検索対象のシートの名前
  • searchKeyword:検索するキーワード

別のスクリプト

Browser.msgBoxを使用してURLを開くためのリンクを表示していますが、SpreadsheetApp.openByUrlDocumentApp.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を取得して開きます。

コメント

タイトルとURLをコピーしました