+++ date = "2019-12-15JST" tags = ["gscript"] title = "Google Apps Scriptで翻訳してみた" slug = "gscript" +++ 今回使用するのは、`Google Apps Script`というものです。Google Translate APIが有料しか無かったのでこちらを使うことにしました。 ハマりどころが多かったので、ポイントだけ。 まず、公開時(リリース時)は、`必ずNewでバージョンをつけないと、更新されない`みたいです。空にした場合、2,3,4と自動で番号が付きます。同じバージョンを選ぶと、内容は保存されているみたいですが、デプロイされていない状態だと思われます。 次に、`curl`で、`-X POST`が機能しないので、書き方が悪いのかなあと思っていたら、本当に機能しないみたいです。機能するポストは以下。 ```js $ curl -L -d "" ``` ```js:main.js function doPost(e) { var contents = e.postData.contents; var d = JSON.parse(contents); var spanish = LanguageApp.translate(d.txt, 'en', 'ja', {contentType: 'html'}); Logger.log(spanish); return ContentService.createTextOutput(spanish); } //function doGet(e) { // return ContentService.createTextOutput("doGet!!"); //} ``` これで、以下のようなコマンドを実行すると、englishがjapaneseに翻訳されます。 ```sh # post req $ curl -L -d "{\"txt\":\"hello\"}" https://script.google.com/macros/s/${APP_ID}/exec こんにちは # get req $ curl -L https://script.google.com/macros/s/${APP_ID}/exec doGet!! ``` [LanguageApp.translate](https://developers.google.com/apps-script/reference/language/language-app)のパラメーターは、`text, sourceLanguage, targetLanguage`となっています。言語を変えたい場合は変えられるようにしておくほうがいいかもしれません。 ```sh LanguageApp.translate(d.txt, d.src, d.targ); curl -L "{\"txt\":\"こんにちは\",\"src\":\"ja\",\"targ\":\"en\"}" ``` ということで、実際に、[archlinux.org](https://www.archlinux.org/)の最新ニュースを翻訳してみました。 ```sh:run.sh #!/bin/bash if [ ! -f ./xq ];then curl -sL https://github.com/syui/xq/releases/download/0.1/linux_amd64_xq -o xq chmod +x xq fi url=$1 date_now=`date +"%Y%m%d"` url_arch="https://www.archlinux.org/feeds/news/" xml=index.xml curl -sL $url_arch -o $xml date_xml=$date_now if [ "$2" != "t" ];then date_xml=`date --date="$(./xq l $xml)" +"%Y%m%d"` fi if [ "$date_now" != "$date_xml" ];then exit fi title=`./xq $xml|jq -r ".[0]|.title"` body=`./xq $xml|jq -r ".[0]|.description"|tr -d '\n'` echo $title, $body curl -L -d "{\"txt\":\"$title\"}" $url curl -L -d "{\"txt\":\"$body\"}" $url ``` ```sh $ chmod +x run.sh $ ./run.sh https://script.google.com/macros/s/${APP_ID}/exec t ``` `github.com/syui/xq`がおかしいと思ったら、`github.com/urfave/cli`が壊れてるぽい。あと、最新のバイナリをreleasesに置いてなかったので、ずっとオプション間違えてて、ローカルでは動いてたので、ハマりまくった。やっぱり、golangで書いたものは、releasesするCIを回しておけばよかった...。