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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

777閲覧

「gmailの内容をスプレットシートに転記」が一部動かない

kato00

総合スコア71

Google スプレッドシート

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2020/08/05 04:14

いつもお世話になっております。
GAS初心者です。

今回メールから各項目を取得後、スプレットシートに転記するコードを書きました。
下記コード動くのですが、全体の4割程度しかデータの取得ができず困っています。
例えば7月1日~7月31日までメールがあると、期間中のメールは拾ってくるが、所々が抜けている状態です。(取得の記述は正しく、条件が違う??)
何が原因なのでしょうか?

GAS

1function RegExpForm(){ 2 var sheet = SpreadsheetApp.getActiveSheet(); 3   var thds = GmailApp.search('label:12.年齢アンケート is:unread'); 4 5for(var n in thds){ 6 var thd = thds[n]; 7 var msgs = thd.getMessages(); 8 for(m in msgs){ 9 var msg = msgs[m]; 10 var date = msg.getDate(); 11 var body = msg.getBody(); 12 var bodys= body; 13 var row = 1; 14 15  // 改行を使って配列化する 16      var ary = bodys.split("\n"); 17 18 // 年齢の行を取得し文字を抽出 19 var age = ary[2].substring(0).replace('\r',''); 20 var URL = ary[5].substring(0).replace('\r',''); 21 22 23 sheet.getRange(row,1).setValue(date); 24 sheet.getRange(row,2).setValue(age); 25 sheet.getRange(row,3).setValue(URL); 26 row++; 27 thd.markRead(); 28 } 29 } 30 var range = sheet.getRange("A:C"); 31 range.sort({column: 1, ascending: true}); 32}

その他必要事項あれば追記します。
宜しくお願いします。

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

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

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

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

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

radames1000

2020/08/05 04:55

未読メールの中で全体の4割しか取得されないということですか?
kato00

2020/08/05 05:53

はいそうです! そして転記できたメールも転記できなかったメールも既読になります。 とすると、取得は出来ていて、転記の部分がおかしいのでしょうか?
sawa

2020/08/05 05:55

質問の件ではないけど、このコードでちゃんと書き出されてますか? for 内で var row = 1 ってしてるから、 いくら row++ しても ずっと1行目になるんでは。
draq

2020/08/05 06:04

処理済みのスレッドに新着メールが着た場合、すでに処理済みのメールが再度スプレッドシートに追加されてしまいます。内部のfor内でもメールが未読かチェックするべきです。
attercop

2020/08/05 09:00

thd.markRead()の既読設定もスレッド単位ではなく、メッセージ単位にした方がよさそうです。
guest

回答1

0

ソース中のthdsが意図した件数に満たないということでしょうか?
その場合GmailApp.search()の引数で絞り込んでいるからのように思えます。
label:12.年齢アンケート is:unreadとあるので「12.年齢アンケート」ラベルのついた「未読」のみを拾ってきていると思います。

投稿2020/08/05 04:59

nekoniki

総合スコア2411

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問