サイトアイコン Googleスプレッドシート 完全攻略

【GAS】GmailのURLをスプレッドシートに自動転送!コード全公開

GASで制御する Gmail

Googleシートマスターのひろしです。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

なので、サクッとマスターして

と答えてあげてください。

動画はこちら

シートはこちら

新規作成してください

 

スクリプト

function extractUrlsToSheet() {
  const spreadsheetId = 'スプレッドシートID'; // スプレッドシートID
 const configSheetName = '設定';
 
  const ss = SpreadsheetApp.openById(spreadsheetId);
  let configSheet = ss.getSheetByName(configSheetName);


  // 「設定」シートがない場合の初期作成
  if (!configSheet) {
    configSheet = ss.insertSheet(configSheetName);
    configSheet.getRange('A1:B3').setValues([
      ['書き込みシート名', 'シート1'],
      ['対象ラベル名', 'ラベル'],
      ['前回実行時刻', new Date(0)]
    ]);
    SpreadsheetApp.getUi().alert('「設定」シートを作成しました。B列の設定値を確認して再度実行してください。');
    return;
  }


  // 設定シートから各設定値を読み込む
  const dataSheetName = configSheet.getRange('B1').getValue();
  const labelName = configSheet.getRange('B2').getValue();
  const lastProcessedTime = new Date(configSheet.getRange('B3').getValue()).getTime();
 
  let dataSheet = ss.getSheetByName(dataSheetName);
  if (!dataSheet) {
    SpreadsheetApp.getUi().alert('シート「' + dataSheetName + '」が見つかりません。');
    return;
  }


  const label = GmailApp.getUserLabelByName(labelName);
  if (!label) {
    Logger.log("ラベル「" + labelName + "」が見つかりませんでした。");
    return;
  }


  let latestTimeInThisRun = lastProcessedTime;
  const threads = label.getThreads();
  const urlRegExp = /https?:\/\/[\w!?/+\-_~=;.,*&@#$%\(\)'[\]]+/g;


  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      const messageTime = message.getDate().getTime();


      // 前回実行時間より新しいメールだけを処理
      if (messageTime > lastProcessedTime) {
        const body = message.getPlainBody();
        const urls = body.match(urlRegExp);
       
        if (urls) {
          urls.forEach(url => {
            dataSheet.appendRow([message.getDate(), url, message.getSubject()]);
          });
        }
       
        if (messageTime > latestTimeInThisRun) {
          latestTimeInThisRun = messageTime;
        }
      }
    });
  });


  // 最後に処理した時刻をB3セルに更新
  configSheet.getRange('B3').setValue(new Date(latestTimeInThisRun));
}

ポイント

 

注意点
使用上の注意点

最後までご覧いただきありがとうございます。

つぎはこちら

【GAS】Gmailメールの送信元を別のメアドに変更する方法 バッファに取得しループ
  • メールの送信元を別のメールアドレスに変更できます。
  • GAS上でできるので、いろいろ使えます。
  • GASで制御する Gmail

    モバイルバージョンを終了