前提
GASでメールを取得、内容をスプレッドシートに転記するシステムを作っています。
発生している問題
複数のメールを読み込んだ際、タイムスタンプはそれぞれ正しいものを取得するがそれ以外は全て最新のもののみが取得される
該当のソースコード
GAS
1function myFunction() { 2 3var values = []; 4var now = new Date(); 5now.setHours(now.getHours()-10); 6 7//条件に当てはまる全スレッドを取得(veltra) 8 var threads = GmailApp.search('リクエスト' + ' after:' + Math.floor(now.getTime() / 1000).toString()); 9//各スレッド情報を取得 10 threads.forEach(function(thread){ 11 //スレッド内の全メッセージを取得 12 var messages = thread.getMessages(); 13 //各メッセージ情報を取得 14 messages.forEach(function(message){ 15 var plainbody = message.getPlainBody(); 16 values.push([plainbody]); 17 18 19//スプレッドシート情報 20 var ss = SpreadsheetApp.getActiveSpreadsheet(); 21 var sheet = ss.getSheetByName('sheet1'); 22 var raws = sheet.getLastRow()+1; 23 24var parsedText = values.toString(); 25 26var info = []; 27//情報取得 28var timestamp = message.getDate(); 29var status = '未選択'; 30var space = ''; 31var familyName= parsedText.match(/参加者名:\s([^\n]*)\n/)[1].split(/\s/).slice(-1)[0]; 32var fullName= parsedText.match(/参加者名:\s([^\n]*)\n/)[1]; 33var startDate = parsedText.match(/参加日時:(.*)/).toString().slice(6,17); 34var startTime= parsedText.match(/参加日時:(.*)/).toString().slice(-5); 35var numberOfPeople= parsedText.match(/数量:(.*)/).toString().split(/,/,1).toString(); 36var tel=parsedText.match(/携帯電話番号:\s(.*)/)[1]; 37var medium= 'a'; 38var payment = 'クレジット' 39 40 41info.push(timestamp,status,space,space,space,fullName,space,space,startDate,startTime,space,numberOfPeople,space,tel,payment,space,space,medium); 42 Logger.log(info); 43 //sheet.appendRow(info); 44 }) 45 }) 46}
試したこと
valuesに複数の要素が入っているのに、その下のコードでは最新のものにしかアクセスできていないということまではわかりました。
どうやってvalues[0],values[1]と進めていくか考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。