Qiita初投稿です。ノンプログラマですが、いつも記事を楽しく読んでいます。
プログラミングの知識が不足しており、汚いかもしれませんが、ご容赦ください。
コード
//シートを取得する。
var sheet = SpreadsheetApp.getActiveSheet();
function getMail() {
// メール検索する文字列:今回は件名の【HP問合せ】
var str = "HP問合せ";
// 上記の文字列に合致するスレッドを取得(とりあえず100件取得します)
var threads = GmailApp.search(str,0,100);
// メッセージを取得する
var messages = GmailApp.getMessagesForThreads(threads);
for(var i = 0; i < messages.length; i++){
for(var j = 0; j < messages[i].length; j++){
//メッセージIDを取得(重複を防ぐため)
var messageId = messages[i][j].getId();
//もし、スプレッドシートに存在したら実行しない
if(!hasId(messageId)){
//メール受信日時を取得
var mailDate = messages[i][j].getDate();
// メッセージの本文をプレーンテキストで取得
var body = messages[i][j].getPlainBody();
//正規表現をつくる
var regName = new RegExp('氏名 :' + '.*?' + '\r' );
var regMail = new RegExp('メールアドレス :' + '.*?' + '\r' );
var regTel = new RegExp('電話番号 :' + '.*?' + '\r' );
var regMemo = new RegExp('備考 :' + '.*?' + '\r' );
//正規表現をマッチさせたうえで、転記するときに、
//セルに"お名前:"などが入らないように、正規部分を削る
var Name = body.match(regName)[0].replace("氏名:","");
var Mail = body.match(regMail)[0].replace("メールアドレス :","");
var Tel = body.match(regTel)[0].replace("電話番号 :","");
var Memo = body.match(regMemo)[0].replace("備考 :","");
//セルに行を追加する(ID、日時、氏名、アドレス、電話番号、備考)
sheet.appendRow([messageID,mailDate,Name,Mail,Tel,Memo]);
}
}
}
}
// 同じIDのメールは転記しないようにするため、すでにIDがあるかどうか調べる関数
function hasId(id){
//今回は1列目にメールIDを入れていくので1列目から探す
var data = sheet.getRange(1, 1,sheet.getLastRow(),1).getValues();
var hasId = data.some(function(value,index,data){
//コールバック関数
return (value[0] === id);
});
return hasId;
}
一旦、出来上がりました。
1日に2回発動するようにトリガーも設定しました。
トリガーの設定は以下のようなものです
【GAS】トリガーの設定
##参照したもの
書籍
Google AppScript完全入門
関数の意味などを調べる用に辞書的に使いました。
作者の高橋さんは、日本のGASリテラシー向上に最も貢献している人に違いない。
GAS勉強しようと思ったとき、おそらくこの本が一番情報量が多いです。
ただ、一からこれ見て勉強するやり方よりも、自分がやりたいことの似たような例をググりながら、辞書的にこの本を参照するのが一番良いと思います。
ブログ
GASでフォーム送信メールからデータを取得してスプレッドシートに蓄積するツールの完全版
同じメールを転記しないようにするためのコードで参照しました。
Google AppScript完全入門の作者の高橋さんのブログ、
GASで分からないことがあってググったら、彼のブログはほぼ確実に出てくる。
【GAS】正規表現を使ってGmailの本文から文章を抜き出す
本文中の文言を項目ごとに別のセルに転記したかったので、
メール本文の特定の文言を抽出するために、
正規表現についてはこの記事を参考にしました。
どこかの企業のブログですが、筆者が同じノンプログラマだったので、分かりやすかったです。
以上です。
このメールからシートへの転記の作業ですが、
社内でも私以外に似たような作業をしている人はいそうなので、手伝いにいきたいなと思います。