2017年03月07日

ポメラ用テキストファイル作成にも使える。「多言語対応オンラインエディタ」

 テキスト形式のファイルで問題となるのが、文字コードと改行コードです。
 UTF-8の場合は、BOMの有無も問題となります。

 テキストエディタでも、対応している文字コードが異なります。また、異なるOSだと同じソフトウエアがないため、調べるのに時間がかかったりします。

 このなかで、よく使っているのがメール関連の処理です。

 ポメラDM200から送ったメールをポメラSync用に変換したり、ブログに投稿するのと同時にEvernoteに保存する、ネット銀行のメールから金額をスプレッドシートに転記するなど、メールを起点とした処理を多く利用しています。

 メールの処理で問題になるのが、Gmailの読み取り制限です。
 一般ユーザーのアカウントでは、一日に20,000件までとなっています。

 2万件なんていかないと、高をくくっていましたが案外簡単に超えてしまいます。

 Google Apps ScriptでGmailを検索して、条件に合ったメールを処理するとき、対象のメール数と頻度(トリガーの間隔)・スクリプトの数で計算してみます。

トリガーの間隔が1分の場合、1440回実行されます。

20000÷1440=13.88件

 このときに、Gmailの検索で毎回ヒットするメール数は13件までになります。

・5分で、69件
・10分で、138件
・15分で、208件
・30分で、416件

 メールを対象とするスクリプトが複数あれば、合算した値となります。
 トリガーの間隔が1分のスクリプトが二つあれば、それぞれ6件までとなります。

 制限を超えると、当然エラーとなります。


 GmailApp.search(検索条件,開始インデックス,最大取得数)

 searchメソッドを使う場合は、最大取得数を大きくしすぎると制限を超えてしまいます。

 制限を回避するには三つの方法があります。
・トリガーの間隔を長くする
・最大取得数を少なくする
・検索条件を工夫する

 この中で、三つ目の検索条件の工夫が一番効果あると考えています。
 できるだけヒットする数が少なくなるように、条件を厳しくします。

 たとえば、未読のもののみを対象にする、特定のラベルのもののみを対象にするなどです。

 こうすると、一度処理したものを既読にする・ラベルを付け替えるなどの処理を行うことで、次の実行時には対象から外れます。


 メール処理のスクリプトは、すぐに処理してほしいものが多いのでトリガーの間隔は1分を多用しています。
 スクリプトがエラーになったときの通知を「今すぐ」にしていると、あっという間に数百通のエラー通知メールが受信トレイにたまります。

 エラーメールを消している最中にも、どんどんメールが来ます。
「え! なに、ちょっと待って〜」

 かなり慌てました。
 取り急ぎ、Google Apps Scriptのトリガーを削除して、エラーメールを削除しました。

 一日の上限を超えると、当然ながら日付が変わらないと使えるようになりません。
 日本時間ではないので、日本では午前9時になります。


 業務システムを動かしていると、こうしたエラーが致命的となります。
 Google Apps Scriptには、この他にもメール送信数の制限など、様々な条件があります。
 スクリプトのテストを行う前に、ちょっと確認しておくとトラブルを回避できると思います。

 そのほかの制限事項については、ダッシュボードをご覧ください。
Google Apps Script ダッシュボード

 では、また次のテキストでお会いしましょう♪
posted by Outliner 伊藤 崇 at 07:18| Comment(0) | ポメラ・電子ノート
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: