Mind Webアプリケーション(CGI)で「禅の言葉」を得てGoogle翻訳で和訳

# はじめに
前回は気象庁のAPIを使って天気概況を取得するアプリケーションを作りましたが、今回はGoogle翻訳を使ってみます。
参考にした（というよりも殆どパクった）記事は以下です。有用な投稿に心から感謝致します。

https://qiita.com/satto_sann/items/be4177360a0bc3691fdf

# Google翻訳APIを作る
Google無料アカウントで作れます。

https://script.google.com/home

Apps Scriptのページを開き

![shot_240118_102428.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/c951a59f-6cc8-ae79-02e9-aa5311f362a9.jpeg)

コードを選択して

![shot_240118_230219.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/756207df-1fbe-409a-0a2e-6ac88d071f67.jpeg)

参考ページのコードを無修正で貼り付けてデプロイ

![shot_240118_230324.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/c4ed325c-6c38-4182-0df4-5774953fade5.jpeg)

ウェブアプリを選択して

![shot_240118_230340.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/0c865e13-4ea6-5116-f2e5-225b336d3ba9.jpeg)

アクセス出来るユーザーは全員にして

![shot_240118_230413.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/2b3e9f63-ca06-0799-3994-680c118f1f50.jpeg)

デプロイが完了

![shot_240118_230436.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/2ab4f680-9d0c-7c7e-34b8-12884495c9e7.jpeg)

ウェブアプリの **デプロイID**、**WebアプリURL** をコピーしてメモ帳などに貼り付け、保存します。

# 「禅の言葉」をAPIで取得

禅の言葉は以下のURLを叩くと得られます。

https://api.github.com/zen

GithubのAPIは、同一IPからのアクセスが一時間に60回までと制限されています。飲み過ぎ、食べ過ぎ、使い過ぎにご注意下さい。

# プログラム
実行環境はこちらを参照して下さい。

https://qiita.com/Mind-Club_2017/items/0fdad646aff08a87618d

ライブラリはこちらを参照して下さい。

https://qiita.com/Mind-Club_2017/items/25fb93b8504a67125dff

<details><summary>コード</summary>

```Mind:cgi-zen.src

※タイトル	禅の言葉を得てGoogle翻訳で和訳
※リンク	    cgilib
※作成日	    2024/01/20

"srclib\unidecode"を、コンパイルする。		※←注目！
"htmlform.src"を、コンパイルする。

成功？とは、真？と、等価。
失敗？とは、偽？と、等価。

JSONファイルは、ファイル。
JSONファイル名は、"zen.json"。
JSONデータは、文字列実体、長さ、８１９２バイト。
作業文字列は、文字列実体、長さ、８１９２バイト。
子プロセス実行文字列は、文字列実体、長さ、１０２４バイト。

翻訳前文字列は、文字列実体、長さ、１０２４バイト。
翻訳後文字列は、文字列実体、長さ、１０２４バイト。

全ての空白を＿に置換とは				（置換前文字列　→　置換後文字列）
		置換前文字列は、文字列実体、長さ、８１９２バイト
		置換後文字列は、文字列実体、長さ、８１９２バイト
		切り出し文字は、変数
	置換前文字列に、入れる
	置換前文字列の、文字数で、回数指定し
		置換前文字列から、一文字切り出し、切り出し文字に、入れる
		切り出し文字が、' 'に、等しい
		ならば
			'_'を
		さもなければ
			切り出し文字を
		つぎに
		置換後文字列に、一文字追加する
	繰り返す
	置換後文字列を、返す。

禅ファイルは、ファイル。
禅ファイル名は、"cgi-zen.txt"。
禅の言葉は、文字列実体、長さ、１０２４バイト。

禅の言葉を得るとは						（　・　→　文字列　）
	ここから
		禅ファイル名が、ファイル有り？
		ならば
			一秒待つ					※排他制御（他の誰かが使っている）
		さもなければ
			打ち切り
		つぎに
	繰り返す
	「cmd /c curl "https://api.github.com/zen" > 」を、子プロセス実行文字列に、入れる
	禅ファイル名を、子プロセス実行文字列に、追加する
	子プロセス実行文字列で、子プロセス実行する
	
	禅ファイルを、禅ファイル名で、オープンする
	禅ファイルから、一行読み込み、禅の言葉に、入れる
	禅ファイルを、クローズする
	禅ファイル名で、ファイル削除し
	禅の言葉を、返す。

英和翻訳とは							（　英文文字列　→　和文文字列　）
		分断位置は、変数
		英文文字列は、文字列実体
	英文文字列に、入れる
	Unicodeデコードテーブルを読み出しし、偽？
	ならば
		重大エラー
	つぎに
	ここから
		JSONファイル名が、ファイル有り？
		ならば
			一秒待つ					※排他制御（他の誰かが使っている）
		さもなければ
			打ち切り
		つぎに
	繰り返す
	「cmd /c curl -L "https://script.google.com/macros/s/」を、子プロセス実行文字列に、入れる
	「（デプロイID）/exec?text=」を
	子プロセス実行文字列に、追加し
	英文文字列を、子プロセス実行文字列に、追加し
	'&'を、子プロセス実行文字列に、一文字追加し
	「source=en」を、子プロセス実行文字列に、追加し
	'&'を、子プロセス実行文字列に、一文字追加し
	「target=ja" > 」と、JSONファイル名を、合成し、子プロセス実行文字列に、追加し
	子プロセス実行文字列で、子プロセス実行する
	
	JSONファイル名で、JSONファイルを、オープンする
			JSONファイルから、一行読み出し、作業文字列に、入れ
			作業文字列を、ＵＴＦ８→ＳＪＩＳ変換し、JSONデータに、入れる
	JSONファイルを、クローズする
	JSONファイル名を、ファイル削除する
	
	JSONデータから、','を、一文字検索したところで、JSONデータを、分断し、捨てる
	JSONデータから、８文字、切り出し、捨てる
	JSONデータから、２文字、右側切り出し、捨てる
	JSONデータを、翻訳後文字列に、入れる。

メインは
	メインの前処理する
		私のプログラム名・短縮を、中で一行表示
		「禅の言葉」の、その値が、空列？
		でなければ
			禅の言葉を得て、翻訳前文字列に、入れる
		つぎに
		
		「禅の言葉」、「禅の言葉」で、データ送信ボタン作成する
		「翻訳前文字列」、０文字制限、６０文字幅、翻訳前文字列で、一行テキスト入力フォーム作成する
		「英和翻訳」、「英和翻訳」で、データ送信ボタン作成する
		
		「英和翻訳」の、その値が、空列？
		または
		「翻訳前文字列」の、その値が、空列？
		でなければ
			「翻訳前文字列」の、その値を、翻訳前文字列に、入れ
			翻訳前文字列の、全ての空白を＿に置換し、英和翻訳する
		つぎに
		翻訳前文字列を、小さく一行表示し
		翻訳後文字列を、中で一行表示する
	メインの後処理すること。
```
</details>

コードの中の（デプロイID）と書かれたところに、Apps Script で得られた **デプロイID** を入れて下さい。

:::note info
curl コマンドは、パラメーター"-L"を付けて、リダイレクトに対応する必要があります。また、URLはダブルクオートで挟む必要があります。
:::

# 実行結果

![shot_240120_211216.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/a4c1196a-96ca-f919-717d-98605f17d85e.jpeg)

起動して、英文を入力し、[英和翻訳]すると翻訳されます。

![shot_240120_211235.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/e415d4c3-46e1-dab2-3cc4-d45bedb5a76d.jpeg)

[禅の言葉]をクリックすると都度異なる「禅の言葉」が得られます。

![shot_240120_211319.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/5d6b8279-3ae0-05bd-7309-a8936d8ea3cd.jpeg)

[英和翻訳]すると和訳が表示されます。

![shot_240120_211331.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174456/9fe99321-11c7-5cd0-492a-b64512bf133f.jpeg)

# おわりに
翻訳出来るのはワン・センテンスだけです。ピリオド以降は翻訳されません。