前提・実現したいこと
Gmailで受信している問合せメールの内容の一部を、スプレッドシート/GASを使って下記の流れで自動的に転記できるようにしたいと考えています。
・特定のラベル付き+未読状態のメールを取得する
・メール内から該当箇所のみをスプレッドシートに転記する
・取得が終わったメールは既読状態に変更する
■元のメールデータ/例文
下記のようなメールから「問合せNo、問合せ日時、氏名、フリガナ、電話番号」の部分のみを取り出してスプレッドシートに転記したい。
(上記の項目名部分で文字列検索をする?)
XX様
この度はお問い合わせありがとうございます。
確認し、こちらからご連絡させて頂きます。
------問い合わせ日時------
問合せNo :000000
問合せ日時 :2019/12/31 00:00:00
--------お客様情報--------
氏名 :山田太郎 様
フリガナ :ヤマダタロウ 様
電話番号 :000-0000-0000
////////////////////////////
株式会社〇〇
住所
電話
メール
///////////////////////////
発生している問題・エラーメッセージ
・該当箇所のみをスプレッドシートに転記する
部分をどう記述すればいいかわからない状態です。
当方非プログラマーのため、メソッドの動作などを検索しながらサンプルコードを組み合わせて作成しておりましたが、
文字列のいい検索方法がわかりませんでした。
該当のソースコード
1function getMail(){ 2 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var objSheet = objSpreadsheet.getSheetByName("シート1"); //出力先のシートを指定 4 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 5 6 //メールチェック用の変数 7 var start = 0; 8 var max = 500; 9 10 //配列"threads"にラベルが問合せ、状態が未読のスレッドを検索、代入。 11 var threads = GmailApp.search('label:問合せ is:unread',start,max); 12 13 //変数"row"にスプレッドシートの最終行の次行を代入 14 var row = sheet.getLastRow() + 1; 15 16 //オブジェクト"threads"のプロパティ数ループする 17 for(var n in threads){ 18 var thd = threads[n]; 19 var msgs = thd.getMessages(); //未読スレッドに含まれるメッセージを配列として取得 20 21 for(var m in msgs){ 22 var msg = msgs[m]; 23 var body = msg.getBody(); //メール本文を1データの塊として取得する 24 var res = body.split("\n") //取得したメール本文を各改行列ごとに配列に代入 25 26 //indexOfで取得したい文字列が入っている配列のインデックス番号を取得→配列で書き込み?search? 27 //検索したい文字列に空白が含まれているのは正規表現の\sで対応? 28 29 var number = res.indexOf(/問合せNo\s\s\s:/); 30 var date = res.indexOf("問合せ日時 :"); 31 var name = res.indexOf("氏名 :"); 32 var name2 = res.indexOf("フリガナ :"); 33 var tel = res.indexOf("電話番号 :"); 34 35 36 //セルへの書き込みを行う 37 sheet.getRange(row,1).setValue(number); 38 sheet.getRange(row,2).setValue(res[date]); 39 sheet.getRange(row,3).setValue(res[name]); 40 sheet.getRange(row,4).setValue(res[name2]); 41 sheet.getRange(row,7).setValue(res[tel]); 42 row++ 43 } 44 } 45 //スレッドを既読に変更する 46 thd.markRead(); 47 Utilities.sleep(1000); 48 }
試したこと
・「var res = body.split("\n")」の段階で出力→改行部分でデータ分割はできている。
・セルへの書き込みで「number」そのものを出力すると「-1」が出力される。
→検索ができていない状態でしょうか?
補足情報(FW/ツールのバージョンなど)

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/12 02:43
2019/03/12 05:33