今回タイトルの通り「Gmailへ届いた最新のメールを、トリガーで5分おきに取得し、メール本文を改行ごとに切り分け、スプレッドシートの各セルへ転記したい」のですが、どうにもエラーが出てしまい正常に稼動しないので、ご相談させていただきました。
当方マーケターでプログラミング初心者です。
独学で周りにもプログラミング出来る人間がいません。。。
様々な方のブログも参考に作ったのですが、どれも掲載されているものではエラーが出てしまい、途方に暮れています。
やりたい事
① Gmailへ下記のようなメールが、指定の件名で届く。
② 届いたメールをトリガーで5分置きに①のメールを取得しに行き、下記のようなスプレッドシートへ転記する。
【この時のルール】
- スプレッドシートには既にメール毎に振り分けられる固有のIDが記載されており、②で取得したメールの固有IDと重複判定を行い、最新のものだけを取得する。
- メール本文を改行ごとに切り分け、スプレッドシートの各セルへ転記したい。
- 20,000通ルール?というものがあるようで、今回5分に1回取得しに行く設定としたいので、maxは50としました。
出ているエラー
構文エラー。(行 18、ファイル「raw data1」)
実際に作ったコード
GoogleAppScript
1function searchContactMail() { 2 3 //シートの定義(変数) 4 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 5 var objSheet = objSpreadsheet.getSheetByName("raw data1"); 6 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 7 8 //Gmailから取得するメールを指定 9 const start = 0; 10 const max = 50; 11 const threads = GmailApp.search("指定の件名", start, max); 12 const messages = GmailApp.getMessagesForThreads(threads); 13 const values = []; 14 const row = sheet.getLastRow() + 1;//最後の行探してそれ以降に追加 15 16 //メールを取得 17 const ids = sheet.getRange(2,10).getValues().flat(); 18 for(const threads of messages){ 19 for(const message of messages){ 20 const message = messages[0]; 21 const time = message.getDate(); 22 const body = message.getBody(); 23 const id = message.getId(); 24 25 //IDの重複しないメールを取得して転記 26 if(!ids.includes(id)){ 27 const record = [ 28 sheet.appendRow([ 29 getRange(row,1).setValue(time); 30 getRange(row,2).setValue(body.match(/AA:.*?.(*?)\r/g)[0].replace('AA:','','')); 31 getRange(row,3).setValue(body.match(/BB:.*?\r/g)[0].replace('BB:','')); 32 getRange(row,4).setValue(body.match(/CC:.*?\r/g)[0].replace('CC:','')); 33 getRange(row,5).setValue(body.match(/DD:.*?\r/g)[0].replace('DD:','')); 34 getRange(row,6).setValue(body.match(/EE:.*?\r/g)[0].replace('EE:','')); 35 getRange(row,7).setValue(body.match(/FF:.*?\r/g)[0].replace('FF:','')); 36 getRange(row,8).setValue(body.match(/GG:.*?\r/g)[0].replace('GG:','')); 37 getRange(row,9).setValue(body.match(/HH:.*?/g)[0].replace('HH:','')); 38 getRange(row,10).setValue(id); 39 ]); 40 ]; 41 } 42} 43 44 if(values.length > 0){ 45 sheet.getRange(lastRow + 1, 1, values.length, values[0].length).setValues(values); 46 } 47 48}
若輩者ですが、どうぞご教示ください。
※本当の初心者なので、分かりやすくお伝えいただけると助かります。。。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/15 15:04 編集
2020/05/15 16:55
2020/05/17 02:23