スキルアップを始める!

【GAS】Gmailに届いた受信トレイの未読メールを自動的に既読にしてスプレッドシートに書き込む-Part2

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

前回の続きです。前回は、受信トレイの未読のメールを既読にするスクリプトができました。次は、スプレッドシートに書き込む処理を作ってみます。

スプレッドシートに書き出す

取得したメールの本文をスプレッドシートに書き込んでいきます。

function searchMails() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('メール取得');
  const threads = GmailApp.getInboxThreads(); // 受信トレイのスレッドを取得

  threads.forEach(thread => {
    const messages = thread.getMessages();
    Logger.log(threads);
    messages.forEach(message => {
      let subject = message.getSubject(); // 件名
      let body = message.getPlainBody(); // 本文
      let data = [subject, body];
      // 行追加
      sheet.appendRow(data);
    });
  });
}

スクリプトを実行すると、受信トレイのメールがスプレッドシートに書き込まれます。

スプレッドシートにメールが追加されました。

ただし、この場合は受信トレイの全部のメールが書き込まれていきますので、実行するたびに行が追加されてしまいます。

例えば、「未読のメールのみ追加して、実行したら既読にする」といった処理をすると良いかもしれません。

未読のメールを取得する

前回の復習ですが、Gmailの受信トレイのスレッドを取得して既読にするには、下記のようなコードで可能です。

受信トレイのスレッドを取得して既読にします。

function markAsRead() {
  const threads = GmailApp.getInboxThreads(); // 受信トレイのスレッドを取得
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].isUnread()) { // 未読の場合
      threads[i].markRead(); // 既読にする
    }
  }
}

スクリプトを実行すると、受信トレイの未読メールが全て既読に変わります。

組み合わせる

あとは、これらを組み合わせることで、完成、、、するはずです。

[rml_read_more]

未読であれば、条件分岐の中でメッセージ(件名・本文)を取得して、最終行に追加、その後既読にする、、、というループを作成しました。実行してみます。

function searchMails() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('メール取得');
  const threads = GmailApp.getInboxThreads(); // 受信トレイのスレッドを取得

  for (var i = 0; i < threads.length; i++) {

    if (threads[i].isUnread()) { // 未読の場合

      const message = threads[i].getMessages();
      let subject = message[0].getSubject(); // 件名
      let body = message[0].getPlainBody(); // 本文
      let data = [subject, body];//配列に格納
      Logger.log(subject);
      Logger.log(body);
      sheet.appendRow(data);

      threads[i].markRead(); // 既読にする
    }
  }
}

実行してみます。

スプレッドシートに書き込まれました!

既読になりました!

まとめ

Gmailの受信トレイから未読メールを取得して、スプレッドシートの本文に転記して、既読にする方法を作成しました。応用については、また色々と作っていきます。

URLをコピーしました!