- ※2021/01/31 slack APIの取得やGASのUI変更に伴い、この記事も大幅に修正
・GAS熟練者への道。
・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。
・第六弾
・第一弾・第二弾・第三弾・第四弾・第五弾はこちら。
経緯
・「六回目か。もうそろそろ個人的に必要な実用アプリも揃ってきたな。」
・「いや、まだあれが残っていた。」
・「あれさえあれば、今後の世界展開計画も、思うがまま。」
→そういうわけで、今回もサンプルアプリと仏様サイトを発見。
https://qiita.com/shohei-y/items/6784ae87ca180c7c5157
→「また参考(※マルコピ)に作るか。」
→取り組み開始。
概要
- 文章を言語を指定して投稿すると、翻訳して返してくれる。
- 多言語はもちろん、複数行翻訳もしてくれる。
結果
作成環境
- Google App Script
- Slack API
- Outgoing Webhook
※Slackがない場合は、一人用のSlackを開設しましょう。(何かと役に立つ。)
手順
Google Apps Scriptの設定
- Googleドライブからスクリプトエディタを起動。
- 起動したプロジェクトに名前をつける
→保存。(最初の3行のままで良い。) - 保存後、上部のデプロイから新しいデプロイをクリック。
- 種類選択ウェブアプリを選択して、下記の項目を追加する。
- プロジェクトバージョン:New(変更内容は任意)
- 次のユーザーとしてアプリケーションを実行:自分(アドレス)
- アクセスできるユーザー:全員(匿名ユーザーを含む)
- 設定後、「デプロイ」ボタンをクリック。作成されるウェブアプリケーションURLをメモしておく。「OK」ボタンをクリック。
- 一旦置いておく。
Slack APIの設定
- Slack APIのトークンを発行。 (※基本的にはこちらを参考)
- Slack APIにアクセス。
- ページ内の「Create New App」をクリックして、下記の情報を入力。
- 「App Name」: アプリの名前(作成内容がわかりやすい名前)
- 「Development Slack Workspace」: アプリを追加するチャンネル
- 入力後、「Create App」をクリックして、作成。
- 作成後に表示されるページの左サイドメニューの「Basic Information」から「Install your app to your workspace」から「Pemission Scope」をクリック。
- 以下のようにscopeを選択
- 表示されるtokenを両方メモしておく。
発信Webフックの設定
- Slack APIのトークンを発行。
コード
- スクリプトエディタに、下記のコードをコピーして、保存。
slack-translate.gs
function doPost(e) {
// 必須情報
const URL = "https://slack.com/api/chat.postMessage"
const TOKEN = "slackAPIトークン" // xoxbで始まるもの。
const CHANNEL_ID = "slackチャンネルID" // https://app.slack.com/client/ワークスペース名/チャンネルID
const body = e.parameter.text.replace(/(\w+)\s/,'');
const tmpSplit = body.split(" ",2);
const original_lan = tmpSplit[0] // 原文の言語
const convert_lan = tmpSplit[1] // 翻訳先の言語
let response;
if (original_lan == "help") {
response = `【コマンド】
honyaku 翻訳元 翻訳先 対象文
【例】honyaku ja en こんにちは
言語は下記から調べよう
https://cloud.google.com/translate/docs/languages
`
} else {
response = body.replace(/(\w+)\s(\w+)\s/,'');
response = LanguageApp.translate(response, original_lan, convert_lan);
}
// slack送信処理
const payload = {
"token" : TOKEN,
"channel" : CHANNEL_ID,
"text" : response
};
const params = {
"method" : "post",
"payload" : payload
};
UrlFetchApp.fetch(URL, params);
}
※以下の項目を自分のものに変えるのを忘れない。
・TOKEN(先程Slack APIの設定でメモしたもの。)
・CHANNEL_ID(投稿したいslackチャンネルID)
- 自分のコードに書き換えて保存。
- 保存後、先程の要領で、「デプロイ」をクリック。
- プロジェクトバージョンを最新のものにして、更新をクリック。
※更新をしないと、反映されない。 - 実際にSlackへ行き、動作確認。(例:「honyaku ja en こんばんは」)
- 正常に動けば、完了。
まとめ
- 今回はSlack Botということで、更に幅が広がった。
- 国際的技術者への道がどんどん開拓さているのでは、十八番のうぬぼれに浸る。
- これを見てくださるエンジニアの皆様、「自分はこれで世界交流をしてるぞ」とか「そんなんじゃ、まだまだ道は遠いな」等の意見を何卒お待ちしております。
参考
-
https://qiita.com/shohei-y/items/6784ae87ca180c7c5157
→このサイトを丸々参考(マルコピ)にしました。大変お世話になりました。 -
https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21
→Slack APIはここを参考にしました。大変お世話になりました。 -
https://qiita.com/soundTricker/items/43267609a870fc9c7453
→ライブラリはこちらを参考にしました。大変お世話になりました。今後も使用していこうと思います。