読者です 読者をやめる 読者になる 読者になる

クリームソーダ浴びたい

インターネットに恩返し

Gmailで受信した内容をスプレッドシートに転記する〜!

Google App Script を使って、Gmailの内容をスプレッドシートに転記させるようにしました。 Google App Scriptは、Javascriptで書く、GoogleApps用のスクリプトみたいです。 環境構築がいらず、手軽にやれるのでよいです。

初めて触ってみました。

アンケートの回答が何百件とメールで届くので、それをスプレッドシートに自動でまとめたかったです。 設問は6個あり、ユーザー名、回答日時などもそれぞれの列で出してみたかった。

順番に、参考にしたサイト ・そもそもGASとはどういうものなのか、ということでまず読んだもの

Google Apps Scriptを使ってみよう! - サテライト原口社長のスクリプト指南 | マイナビニュース

これをみて、Helloworldをだしてみた...

Gmailを転記させるコードが書いてあるBlogはないんか〜と思って参考にしたもの Gmailのデータを取得する。 | mirandora.com

これをみて、とりあえずメールを書き出せた...

  • その他細かいクエリを調べた
  • fromがenqueteのものだけ出す
  • 直近○日間のものだけ取得する、など

Gmailの受信トレイ、特定のラベル内のメールを条件を絞って自動削除する方法

これをみて、あとはJSの記法を調べながら、なんとなく試行錯誤した。

function getMail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var threads = GmailApp.search('from:Enquete newer_than:4d');
  var row = 2;
  
  for(var n in threads){
    var thd = threads[n];

    var msgs = thd.getMessages();
    for(m in msgs){
      var msg = msgs[m];
      var date = msg.getDate();
      var body = msg.getBody()
      sheet.getRange(row, 1).setValue(date);

      // splitでどの文字で文字を区切るか、区切った文字列をresという変数に代入
      var res  = body.split('<br />\n<br />')

      // replaceで不要な文字列を削除、その後splitで改行ごとにuserという変数に代入
      var user = res[0].replace('ユーザー:<br />\n', '').split('<br />\n')
      sheet.getRange(row, 2).setValue(user[0]);
      sheet.getRange(row, 3).setValue(user[1]);
      sheet.getRange(row, 4).setValue(user[2]);

      // splitで区切った文字列をfor文で各カラムに追加
      for(i = 1; i < 10; i++){
        //replaceで不要な質問1〜質問6の見出しと<br>を削除
        var result = res[i].replace('質問1:<br />\n', '').replace('質問2:<br />\n', '').replace('質問3:<br />\n', '').replace('質問4:<br />\n', '').replace('質問5:<br />\n', '').replace('質問6:<br />\n', '').replace('<br />\n', '');
        sheet.getRange(row, (i + 4)).setValue(result);
      }
      row++
    }
  Utilities.sleep(1000);
  }
}

本文の中で

  • ユーザー名

  • 回答日時

  • 入会日時 などが改行ごとに記載されていたので
    でセルを区切る的な感じにしています。

お問い合わせもこれで自動でスプレッドシートに出すようにしよう。。