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); } }
本文の中で
ユーザー名
回答日時
入会日時 などが改行ごとに記載されていたので
でセルを区切る的な感じにしています。
お問い合わせもこれで自動でスプレッドシートに出すようにしよう。。