Google Apps Script (GAS)で試そうとしたら失敗に終わった

前回は出力したCSVファイルをスプレッドシートへ貼り付けて、またコピーしテキストエディタに貼り付け、整形し保存といった手順を一つずつやっていたので、自動化したいと思った。なんなら翻訳Webアプリを作って公開しようかと思った。

GX-Works2のコメント翻訳WebアプリをGoogle App Scripts で作成しようとしたらつまずいた。 GASの制限だった。

GASでの翻訳命令は下記の通り
LanguageApp.translate(comment, "ja", "En")
翻訳関数自体は苦労する余地もない。

csvファイルをGoogleドライブのフォルダに置いて、ファイルをよび出す部分も作成した。ファイルからの読み出し自体はインターネットで検索すればすぐに例が出てくる。三菱コメントの使用どおりUFT-16で読み出せた。これも苦労しなかった。

csvファイルをタブで区切って変数に配列に入れてコメントの部分だけループで翻訳関数にかける。ここからつまずき始めた。

一つは短い時間に使用する回数。translate命令を実行してもう一度命令をするまでの時間が短すぎると、エラーになってしまう。これはタイマーを入れてtranslate命令を使う間隔を1秒待つことで回避できた。

Utilities.sleep(1000)

しかし次は1日の実行回数で引っかかった。おそらく一日でtranslate関数を使うことができる数に制限があるとのことだ。特にGmailと違って特に翻訳関数には記載が無いのに。一回のテストに付きループでtrans関数を何百回とかけていたから、すぐにエラーが出た。おそらく2000回ぐらい使うとなるのだと思う。テストの段階で制限回数に引っかかるなんて・・・。Webアプリにするつもりなら絶対に使えない。違う方法を探さなくては。

コードは以下の通り。

翻訳した後、コメントファイルへインポートが難しかった

Googleスプレッドシートで翻訳するところまでは簡単だったが、翻訳したデータをGX Works2コメントファイルへインポートするところで苦労した。文字数を少なくするために、スペースを無くし単語の先頭は大文字に変換し、セミコロンやタブを入れた。

Notepad++を使用し、以下のような手順で処理した。

  1. CSVファイルをNotepad++で開く
  2. Ctrl+A Alt+Shift+U 全て選択
  3. 編集 →大文字/小文字変換→語頭は大文字、他は小文字(Proper Case)
  4. 半角スペースを空文字に置換。
  5. 先頭文字にセミコロンをつける。
  6. カンマを”\t”(セミコロン タブ セミコロン)に置換
  7. エンコード → UCS LE BOMへ変換
  8. 編集 → 改行コード変換 →Unix(LF)
  9. 名前を付けてCSVファイルに保存する。

CSVファイルについては取説を見ると以下のように定義されている。


下記に,CSV ファイルの詳細な形式について示します。
• ファイル形式はUnicode(UTF-16 Little Endian BOM あり)です。
• 項目間の区切りはタブ( \t) です。
• 各項目はダブルクォーテーション(“) で囲みます。
• 項目内にダブルクォーテーション(“) を含む場合,項目内のダブルクォーテーション(“) はダブル
クォーテーション2個(“”) で表します。
• 行の最後は改行を設定します。
改行コードはCR+LF です。
• 空白は通常文字として扱います