質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

1290閲覧

gasについてです。forが繰り返されません

keee.fre

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/12/13 09:17

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わかる方教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2020/12/14 14:06

> 1回で終わってしまいます。 具体的に観測した事実は何ですか。どうなるべきところ、どうなっている、と望むかたち実際の姿を区別して質問に追記していただけないですか。
guest

回答1

0

for文以前にmyMsgsに値が取得できていることは確認しましたか?
その値には2次元配列で取得できていますか?
2回目のforには入っていますか?

動かないと思ったときは1行1行確認していき、どの行が思ったように動いていないかをはっきりさせると自分で解決しやすくなります。

投稿2020/12/14 05:49

masaki_

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問