[GAS] 処理速度改善(メール)

326 views
Skip to first unread message

defalco andrea

unread,
Sep 24, 2014, 3:56:34 AM9/24/14
to google-app...@googlegroups.com
こんばんは、質問ばかりですみません。
2スレッドで100通程度のメールを読み取りで、4分ほど掛かっています。
改善点がありましたら、ご指導頂けないでしょうか。

  var msgs = GmailApp.getMessagesForThreads(GmailApp.getInboxThreads());
  for (var threadCount = 0 ; threadCount < msgs.length; threadCount++) {
    for (var msgCount = 0; msgCount < msgs[threadCount].length; msgCount++) {
    var messageObj = msgs[threadCount][msgCount];
    var read = messageObj.isUnread();
    var subject = messageObj.getSubject();
    var body = messageObj.getBody();
       var attachments = messageObj.getAttachments();
      for (var attachCount = 0; attachCount < attachments.length; attachCount++) {
        if (attachments[attachCount].getName() == "data.csv") {
          var attachCsv = Utilities.parseCsv(attachments[attachCount].getDataAsString("UTF-8"));
      // TODO
        }
   }
   messageObj.markRead();
   Logger.log(messageObj.getDate());
  }
 }

受信スレッドのメッセージから、件名・本文・添付ファイルを読み取り、既読にしています。
添付ファイルは、メッセージに対して1つで1KB程度のファイルです。
使用していない変数は、TODO以下で使用予定です。

Takashi Yokoyama

unread,
Sep 24, 2014, 8:43:48 PM9/24/14
to google-app...@googlegroups.com
横山@GDG中国です。

スレッド全体を既読にするのであれば、GmailThread#markRead()を呼び出した方が
早いかもしれません。

私も同様の事をやりましたが、処理スピードは遅かったです。
改善するかどうかはわかりませんが参考まで…。


2014年9月24日 16:56 defalco andrea <andrea...@gmail.com>:

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
Takashi Yokoyama
GDG Chugoku Manager

tksyo...@gmail.com
http://sites.google.com/site/gdgchugokuofficial/
G+: http://goo.gl/VV3eJ
twitter: @GDGChugoku

defalco andrea

unread,
Sep 26, 2014, 4:29:28 AM9/26/14
to google-app...@googlegroups.com
ご返信ありがとうございます。

なるべく、APIを呼び出さないようにすることが、高速化の常套手段のようでして、
確かに、既読は可能であればまとめたほうが速そうですね。

4, 5通のメッセージを読んだあと、次のメッセージまで4秒ほど掛かっているようでして、
これは、サーバ上で処理制限か何かで押さえられてるのではとも思っています。
Reply all
Reply to author
Forward
0 new messages