gas
1function fetchContactMail() { 2 3 /* Gmailから特定条件のスレッドを検索しメールを取り出す */ 4 var query = 'label:mitsubishi'; //検索条件 5 var myThreads = GmailApp.search(query); //条件にマッチしたスレッドを取得 6 var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納 7 8 var valMsgs = []; 9 10 /* 各メールから日時、送信元、件名、内容を取り出す*/ 11 for(var i = 0;i < myMsgs.length;i++){ 12 for(var j = 0; j < myMsgs[i].length; j++) { 13 valMsgs[i] = []; 14 valMsgs[i][0] = myMsgs[i][j].getDate(); 15 valMsgs[i][1] = myMsgs[i][j].getSubject(); 16 var plainBody = myMsgs[i][j].getPlainBody(); 17 18 var name = /お名前 :(.*)/; 19 valMsgs[i][2] = plainBody.match(name)[1]; 20 21 var item = /■商品名\n(.*)/; 22 valMsgs[i][3] = plainBody.match(item)[1]; 23 24 var address = /お届け先住所\n([\s\S]*[建物名])/; 25 valMsgs[i][4] = plainBody.match(address); 26 27 var email = /【メールアドレス】\n.*?/; 28 valMsgs[i][5] = plainBody.match(email); 29 30 var tel = /【電話番号】\n.*?/; 31 valMsgs[i][6] = plainBody.match(tel); 32 33 var demo = /【デモンストレーション希望】\n.*?/; 34 valMsgs[i][7] = plainBody.match(demo); 35 36 var contents = /【お問合せ内容】\n.*?/; 37 valMsgs[i][8] = plainBody.match(contents); 38 39 var channel = /【知ったきっかけ】\n.*?/; 40 valMsgs[i][9] = plainBody.match(channel); 41 42 var needs = /【関心のあるテーマ】\n.*?/; 43 valMsgs[i][10] = plainBody.match(needs); 44 45 var background = /【検討状況】\n.*?/; 46 valMsgs[i][11] = plainBody.match(background); 47 48 var employees = /【社員数】\n.*?/; 49 valMsgs[i][12] = plainBody.match(employees); 50 } 51 } 52 53 /* スプレッドシートに出力 */ 54 if(myMsgs.length>0){ 55 56 var sheet = SpreadsheetApp.getActive().getSheetByName('mitsubishiname'); 57 var maxRow=sheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 58 sheet.getRange(maxRow+1, 1, i, 13).setValues(valMsgs); //シートに取得したメッセージのデータを追加 59 60 } 61} 62
Gmailからスプレッドシートに必要な情報を正規表現で指定して抜き出すというコードです。
2つ目のforがうまく繰り返しを機能して居ません。1回で終わってしまいます。
どのあたかGASわかる方教えていただけないでしょうか。
> 1回で終わってしまいます。
具体的に観測した事実は何ですか。どうなるべきところ、どうなっている、と望むかたち実際の姿を区別して質問に追記していただけないですか。