2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS修行⑥】文章翻訳Slack Botを作成して、世界横断技術者を目指す。

Last updated at Posted at 2019-01-14
  • ※2021/01/31 slack APIの取得やGASのUI変更に伴い、この記事も大幅に修正

・GAS熟練者への道。
・先人達のコードの「写経&コピー」の駆使の成果物のまとめ。
・第六弾
第一弾第二弾第三弾第四弾第五弾はこちら。

経緯

・「六回目か。もうそろそろ個人的に必要な実用アプリも揃ってきたな。」
・「いや、まだあれが残っていた。」
・「あれさえあれば、今後の世界展開計画も、思うがまま。」
→そういうわけで、今回もサンプルアプリと仏様サイトを発見。
https://qiita.com/shohei-y/items/6784ae87ca180c7c5157
→「また参考(※マルコピ)に作るか。」
→取り組み開始。

概要

  • 文章を言語を指定して投稿すると、翻訳して返してくれる。
  • 多言語はもちろん、複数行翻訳もしてくれる。

結果

・実際の画面はこちらです。
image.png

作成環境

  1. Google App Script
  2. Slack API
  3. 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を選択

slack2.png

  • 表示されるtokenを両方メモしておく。

slack.png

発信Webフックの設定

  • Slack APIのトークンを発行。
    • Slack内のアプリを追加したいチャンネルに行き、アプリ名をクリックして、「アプリを追加する」をクリック。
      image.png
    • 「Appディレクトリ」ページの検索欄にwebと入力して、出てくる「Outgoing Webhook」をクリック。
      image.png
    • Outgoing Webhookページの「設定を追加」をクリックして、下記の項目を入力。
      • 「引き金となる言葉」: honyaku
      • 「URL」: Google Apps ScriptのURL(※先程メモしたもの。)

tst.png

コード

  • スクリプトエディタに、下記のコードをコピーして、保存。
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ということで、更に幅が広がった。
  • 国際的技術者への道がどんどん開拓さているのでは、十八番のうぬぼれに浸る。
  • これを見てくださるエンジニアの皆様、「自分はこれで世界交流をしてるぞ」とか「そんなんじゃ、まだまだ道は遠いな」等の意見を何卒お待ちしております。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?