2017年03月16日

Google Apps ScriptでGmail読み取り制限によるトラブルを回避する

 業務システムから、ブログの投稿やポメラSync用の仕組みなども最近ではGoogle Apps Scriptを使っています。

 Googleのサービスをコントロールしたり、連携が容易にできるのでアイデアしだいでいろんなことができます。

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

 ポメラ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 11:59| Comment(0) | 効率化・仕組み

2017年03月07日

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

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

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

 BOM:(バイトオーダーマーク)は、ユニコードの種類や内部的なデータの並べ方(エンディアン)の判別に使われるものです。UTF-8は、BOMが必須とされていなかったことから、仕様上データの並べ方(エンディアン)の違いがないにも関わらずBOMありとなしが存在しています。
 このためUTF-8にBOMが付くことを想定していないアプリケーションではトラブルの原因となります。Web関係の、HTML・CSS・JavaScript・PHPなどは、BOMなしが無難です。逆に、Excelでは
BOM付きのCSVでないと読み込みがうまくできません。Windowsのメモ帳はBOM付きになります。
 キングジムのポメラでは、DM200以外の機種では文字コードがSHIFT_JIS、改行コードはCR+LFしか扱えません。
 DM200では、UTF-8に対応しましたが、BOMありで保存されます。

 UTF-8で、BOMありにしたい、BOMを取りたいという場合や、他の文字コード・改行コードに変換したいときには、対応したテキストエディタで保存し直す必要があります。

 パソコンに、こうしたテキストエディタがあれば問題ありませんが、ソフトのインストールが制限されていたり、異なるOSのパソコンで行いたいケースもあります。

 この場合に利用できるのが、「Multilingual Online Editor 多言語対応オンラインエディタ」です。

 Multilingual Online Editor 多言語対応オンラインエディタ
 http://multilingual-editor.sugutsukaeru.jp/

 ブラウザさえあれば、Windows・Mac・ChromeOSなどOSに関係なく利用できます。

 BOMだけではなく、文字コードの変換・改行コードの変換にも対応しています。
 テキストの編集も可能です。

Screenshot 2017-03-06 at 18.04.26.png


http://multilingual-editor.sugutsukaeru.jp/

 サイトにアクセスすると、ファイルの読み込み画面になります。
 ここで、ローカルのファイルを選択します。
 読み込むファイルの文字コードを指定します。
「Begin to Edit」ボタンを押すと、ファイルの編集画面になります。
 文字化けしていないか確認をしてください。 

 ファイルの選択をしないで、「Begin to Edit」ボタンを押すと新規作成の状態になります。

Screenshot 2017-03-06 at 18.05.05.png

 編集が必要なければ、右側の保存形式の設定を行います。

 改行コード(line feed code)を選択します。
 一般的には、SHIFT_JISの場合はCR+LF、UTF-8の場合はLFです。

「charset」(文字コード)のプルダウンメニューでは、保存する文字コードを選択します。
「multilingual(UTF-8)」を選ぶと、BOMの設定が表示されます。
「UTF-8 option」で、「with BOM」がBOMあり、「without BOM」がBOMなしです。

「Save」ボタンを押すと、ファイルがダウンロードされます。


 インターネットに接続していないと利用できませんが、ブラウザさえあれば端末やOSに関係なく利用できます。

 Chromebook・ChromeOSでは、文字コードや改行コードの指定ができるテキストエディタがあまりありません。
 また、変換が必要になるケースがあまりない場合には、テキストエディタのアプリケーションを入れるよりも便利です。

 編集が必要な場合は、編集枠の右上にあるプルダウンを変更すると表示の行数を200行まで増やすことができます。
 初期値は、10行になっています。

 ブラウザで利用するエディタの欠点として、タブが入力できないというものがあります。
 ブラウザでは、Tabキーを押すとフォーカスが移動してしまいます。
 しかし、このエディタでは「Insert TAB」というボタンがあり、これを押すことでカーソル位置にタブを入力できます。
 HTMLファイルやソースコード編集では、タブを多用するのでありがたい機能です。


 検索や置換の機能がないので、文章の執筆や大がかりな編集向きではありませんが、ちょっとした修正や文字や改行コードの変換に適したエディタです。

 ポメラで読める形式に変換したいときや、Excelでうまく読み込めないCSVを変換したいときなどに試してみてはいかがでしょうか。

 では、また次のテキストでお会いしましょう。
posted by Outliner 伊藤 崇 at 07:18| Comment(0) | ポメラ・電子ノート

2017年03月06日

ポメラで単語登録が消える・文章が消えるときの対処方法

 このところ、ポメラDM100で単語登録が頻繁に消える・入力した文章が消えるというツイートを見かけます。

 こうした方々とやりとりをさせていただいて、対処方法がわかったので記載しておきます。 ※必ず直るという保証はありませんが、この操作で改善している方が複数いらっしゃいます。

 DM100には、メモリ保護用の電池として、ボタン電池が使用されています。

 DM100の単三電池は、動作用の電池です。
 この他に、ボタン電池があります。

 このボタン電池が消耗していると、電池交換時に日付・時刻がリセットされたりいろいろと不具合が起こります。

 まずは、ボタン電池を新しいものに交換してください。


 電池を交換しただけでは、不具合が解消しない場合があります。
 このときは、本体メモリにあるデータをパソコンにバックアップします。

 本体メモリのバックアップは、USBケーブルでパソコンと接続して行ってください。
 単語登録のデータも、エクスポートでバックアップを行います。

 次に、ファームウエアが最新でない場合は最新にアップデートします。
 すでに最新のファームウエアになっているときは、初期化を行います。

 初期化(フォーマット)は、次の手順で行います。

 電源が切れている状態で、
「Esc」+「→」+「電源」のキーを同時に押します。

 液晶が表示されたらキーを離します。


 後は画面の指示に従って、初期化(フォーマット)を行ってください。

 初期化を行うと、日付時刻や設定データなどがすべて消えますので、再度設定を行ってください。

 単語登録は、バックアップしたものをインポートで読み込むことで戻ります。

 この操作で、登録辞書が消えるなどのトラブルが解消したケースが複数あります。
 絶対に直るという保証はできませんが、試してみる価値はあると思います。
posted by Outliner 伊藤 崇 at 08:44| Comment(0) | ポメラ・電子ノート