95 lines
3.2 KiB
Markdown
95 lines
3.2 KiB
Markdown
|
+++
|
||
|
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を回しておけばよかった...。
|
||
|
|
||
|
|