前提・実現したいこと
Gmailで受信している問合せメールの内容の一部を、スプレッドシート/GASを使って下記の流れで自動的に転記できるようにしたいと考えています。
・特定のラベル付き+未読状態のメールを取得する
・メール内から該当箇所のみをスプレッドシートに転記する
・取得が終わったメールは既読状態に変更する
■元のメールデータ/例文
下記のようなメールから「予約日時、名前、電話番号」の部分のみを取り出してスプレッドシートに転記したい。
「体験申込フォーム」に予約がありました。
+++-----------------------------+++
予約の種類:体験申込フォーム
料金:¥0 (税込)
予約日時:2021年6月1日(火) 14時30分 / 幼児コース(対象:2歳半~6歳)
料金:¥0 (税込) /1名分
+++-----------------------------+++
+------------------------
+------------------------
名前:山田太朗
電話番号:0120-1111-2222
発生している問題・エラーメッセージ
GAS Sprict内28行目に
TypeError: Cannot read property 'markRead' of undefinedと出てしまいます
非プログラマーの為、他のサイトを確認しながら作成しましたがどこが間違っているのかわからずです
GAS
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:Kids School 体験申込フォーム is:unread',start,max); 12 13 //オブジェクト"threads"のプロパティ数ループする 14 for(var n in threads){ 15 var thd = threads[n]; 16 var msgs = thd.getMessages(); //未読スレッドに含まれるメッセージを配列として取得 17 18 for(var m in msgs){ 19 var msg = msgs[m]; 20 var body = msg.getBody(); //メール本文を1データの塊として取得する 21 var dateandtime = body.match(/^予約日時\s*?:(.+)$/m)[1]; 22 var name = body.match(/^名前\s*?:(.+)$/m)[1]; 23 var tel = body.match(/^電話番号\s*?:(.+)$/m)[1]; 24 sheet.appendRow([dateandtime, name, "", "", tel]); 25 } 26 } 27 //スレッドを既読に変更する 28 thd.markRead(); 29 Utilities.sleep(1000); 30} 31
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/31 14:51 編集
2021/05/31 16:34
2021/06/01 11:54