質問: myMsgs[i][0].getPlainBody().match(/1234[^\n]*/g); } /* スプレッドシートに出力 */ if(myMsgs.length>0){ SpreadsheetApp.getActiveSheet().getRange(2, 1, i, 6).setValues(valMsgs); //シートに貼り付け } } よろしくお願いいたします。
回答: たぶん下記でいけるはず。 ``` //valMsgs[i][5] = myMsgs[i][0].getPlainBody().match(/1234[^\n]*/g); Array.prototype.push.apply(valMsgs[i], myMsgs[i][0].getPlainBody().match(/1234\d{5}/g)); ``` 追記 配列の長さがバラバラになるのを考慮してませんでした。 こんな感じでいかがでしょうか? 試してないので、エラーがでたらすみません。。 ``` function searchContactMail() { /* Gmailから特定条件のスレッドを検索しメールを取り出す */ var mail_query = ('ラベル条件'); var myThreads = GmailApp.search(mail_query, 0, 50); //条件にマッチしたスレッドを取得 var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納 var valMsgs = []; /* 各メールから日時、送信元、件名、内容を取り出す*/ var maxLength = 0; for(var i = 0;i < myMsgs.length;i++){ valMsgs[i] = []; valMsgs[i][0] = myMsgs[i][0].getDate(); valMsgs[i][1] = myMsgs[i][0].getFrom(); valMsgs[i][2] = myMsgs[i][0].getTo(); valMsgs[i][3] = myMsgs[i][0].getSubject(); valMsgs[i][4] = myThreads[i].getPermalink(); var result = myMsgs[i][0].getPlainBody().match(/1234[^\n]*/g); // 正規表現で本文中の文字列を取り出す。 Array.prototype.push.apply(valMsgs[i], result); // 元の配列に取り出した配列を追加する。 if (result.length > maxLength) { maxLength = result.length; // 取り出した配列の最大の長さを取得しておく } } maxLength += 5; // ここで固定項目数分加算(項目数=カラム数を固定する) /* カラム数に足りない行にカラムを追加する */ valMsgs.forEach(function(x) { if (x.length < maxLength) { /* 足りないカラム数分だけ空の配列を用意して追加する */ var s = Array.apply(null , Array(maxLength - x.length)).map(function() { return ""; }); Array.prototype.push.apply(x, s); } }); /* スプレッドシートに出力 */ if(myMsgs.length>0){ SpreadsheetApp.getActiveSheet().getRange(2, 1, i, maxLength).setValues(valMsgs); //シートに貼り付け } } ```