スキルアップを始める!

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

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

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

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

ついにPart3まできてしまいました。前回、スプレッドシートに書き込む処理が成功しました。前回の続きです。

未読のメールのみスプレッドシートに書き込み既読にする

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

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(); // 既読にする
    }
  }
}

実行してみます。

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

既読になりました!

書き込む列番号を調整する

このままだと、.appendRow(data)で配列の左から順番にデータが書き込まれていきます。これで完成…でもよいかもしれませんが、例えば「D列から書き込みたい」という場合もあるかと思います。その場合の対応方法です。

開始の列数をD列からにしたい。

配列に空白の要素を追加しておく

[rml_read_more]

配列に空白の要素を追加しておく…という方法が考えられそうです。

  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(); // 既読にする
    }
  }

開始列が調整できました。

getRange().setValue()

getRange().setValue()で作ってみます。

  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);
      sheet.getRange(3,4,1,2).setValue(data);
      threads[i].markRead(); // 既読にする
    }
  }

この場合は、3行目4列目から、1行2列に書き込みます。

書き込めました!

まとめ

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

URLをコピーしました!