こんにちは!
GAS(Google Apps Script)初心者ですが、たまたま開発を行う機会があったので、備忘録として書いていきます。
この記事で扱うのは、Gmailで送信されたメールをチェックして、Googleスプレッドシートに出力するスクリプトです。
本文の取り出し方にパターンがありますが、
今回は「本文の一行目を取り出す」パターンをご紹介したいと思います。
用途としては、例えば日次や月次でメールを送信している場合、Gmailと連携させて、
ちゃんと送信されたか送信メールを一覧で確認することが可能です。
例えば、メールの本文冒頭に、「○○様」などが書いてあれば、誰に送ったかは本文を見れば分かります。
※取得できるスレッド数または件数(?)に制限があるようなので、送信先が多い場合にはご注意ください。
■完成イメージ
まず最初に、Googleスプレッドシートを開きます。
次に、スクリプトエディタを開きます。
■ツール>スクリプトエディタ
こちらの画面が開きます。
以下のようにスクリプトを書きます。
※function名を分かりやすい名前に変えるのもありです。
■ソース
function myFunction() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
var strTerms = 'GASテストメール';//検索したい件名
var myThreads = GmailApp.search(strTerms,0,200);//スレッド数
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
var valMsgs = [];
/* 各メールから日時、件名、内容、リンクを取り出す */
for(var i=0;i<myMsgs.length;i++){
for(var j=0;j<myMsgs[i].length;j++){
var date = myMsgs[i][j].getDate();
var subj = myMsgs[i][j].getSubject();
var body = myMsgs[i][j].getPlainBody();
var ary = body.split("\n");
var tempo = ary[0].substring(0).replace('\r','');
var perm = myThreads[i].getPermalink();
valMsgs.push([date,subj,tempo,perm]);
}
}
/* スプレッドシートに出力 */
if(myMsgs.length>0){
SpreadsheetApp.getActiveSheet().getRange(3, 1, valMsgs.length, 4).setValues(valMsgs);
}
}
ここでは、「GASテストメール」という件名のメールを送ったとします。
※strTermsに検索したいメールの件名を設定してください。
続いて、スプレッドシートに実行用ボタンを追加します。
※ここは好みなので、読み飛ばしていただいても問題ありません。
■挿入>図形描画
好きな図形を選択します。
[テキストを編集する]を押下して、好きな文言を設定します。
[保存して終了]ボタンを押下します。
function名を入力し、[OK]ボタンを押下します。
設定が完了したら、[実行]ボタンを押下します。
初回は以下のように警告メッセージがいくつか表示されるかもしれませんが、続行するしかありません。
これで、結果がスプレッドシートに出力されます。
ちなみに、リンクをクリックすると、対象のメールが開きます。
最後までお読みいただき、ありがとうございました