LoginSignup
14
2

More than 1 year has passed since last update.

【初心者でも簡単】逆翻訳LINEbot【LINE API+GAS+スプレッドシート】

Last updated at Posted at 2021-12-12

ちょっと前に、「逆翻訳やってるYouTuberの動画を楽しいよ」と教えてもらいました。

バイヤー高橋チャンネル 逆翻訳で崩壊シリーズ

簡単に説明すると

日本語→英語
英語→韓国語
韓国語→ドイツ語
ドイツ語→英語
英語→日本語

というように翻訳を何回か繰り返し
変な日本語が返ってくるのを楽しもう!という内容です。

試しに以下の文章を逆翻訳してみると

むかしむかし、あるところにお爺さんとお婆さんがいました。

↓↓↓↓↓逆翻訳↓↓↓↓↓

昔々、ある場所に老婆と老婆がいました。

おばあちゃんがふたりになった!?w
というように誤訳を楽しみます。楽しんでください。楽しむ心を持ってください。

今までは、自分で楽しむときはGoogle翻訳で翻訳してはコピペして
言語を変えて、、、としていたようですが、
それであればLINEbotで返せば面白いかも??
ということで作ってみました。

構築するのはGmailアカウントの登録だけで構築できる
スプレッドシートとGASで作ってみます。

まずはスプレッドシートを開きます。
image.png

セルの場所 内容
セルA1 問い合わせ日時
セルB1 問い合わせ内容
セルC1 応答内容
セルD1 userID

 
と記載します。

そしてスクリプトエディタを立ち上げます。
スプレッドシートのタブから拡張機能⇒Apps Script
image.png

Apps Scriptが立ち上がってきますので以下のコードを記載します。
image.png

コード.gs
const CHANNEL_ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';//ここにLINE Messaging APIのアクセストークンを記載
var SS = SpreadsheetApp.getActiveSpreadsheet(); //SpreadsheetのURL
var sheet = SS.getSheetByName("シート1"); //Spreadsheetのシート名(タブ名)


function doPost(request) {
 //POSTリクエストをJSONデータにパース
 const receiveJSON = JSON.parse(request.postData.contents);
 const event = receiveJSON.events[0];

var translate1 =""

text = event.message.text //event.message.textがLINEから受け取ったテキスト

translate1 = LanguageApp.translate(text, "ja", "en"); //受け取ったテキストを日本語から英語翻訳
translate2 = LanguageApp.translate(translate1, "en", "ko"); //英語から韓国語に翻訳
translate3 = LanguageApp.translate(translate2, "ko", "en"); //韓国語から英語に翻訳
translate4 = LanguageApp.translate(translate3, "en", "de"); //英語からドイツ語に翻訳
translate5 = LanguageApp.translate(translate4, "de", "en"); //ドイツ語から英語に翻訳
translate6 = LanguageApp.translate(translate5, "en", "ja"); //英語から日本語に翻訳

replyToUser(event.replyToken, translate6)  //下に記載してある、リプライのfunctionにリプライトークンと最後の英語から日本語に翻訳したテキストを送る

sheet.appendRow([getCurrentTime(),event.message.text,translate6,event.source.userId]); //スプレッドシートに時間や内容を保存


}

//記録用の時間を日本時間で記録
function getCurrentTime() {
  return Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");
}

//LINEへのリプライ用のfunction
function replyToUser(replyToken, text) {

    const replyText = {
        "replyToken": replyToken,
        "messages": [{
            "type": "text",
            "text": text,
        }]
    }

    const options = {
        "method": "post",
        "headers":
        {
            "Content-Type": "application/json",
            "Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN,
        },
        "payload": JSON.stringify(replyText)
    };

    UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}

記載が終わったら、保存ボタンをおして⇒デプロイ⇒新しいデプロイをします。

保存せずにデプロイすると、保存前のデータでデプロイしますのでご注意ください

image.png

デプロイ後に出てくるウェブアプリのURLをコピーしてメモ帳などに記録しておいてください。
image.png

その後LINEdeveloperでwebhookに上記のアドレスを設定します。

webhookの設定の仕方は下記の資料をご参考に、、、 (GASのデプロイで詰まった場合もこちらに詳しく記載しております。)

LINEdeveloperでwebhookに先ほど取得したウェブアプリのアドレスを設定してください。
その後、LINEdeveloperでリプライトークンを発行したら
先ほどのコードの
const CHANNEL_ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

のところのxxxのところに記載してください。( ' は残しておいてください。)

記入が終わりましたら保存⇒デプロイを管理

ここで新しいデプロイを選択してしまうとウェブアドレスがかわってしまい LINEdeveloperで設定したwebhookも変更しなければならなくなるため、ご注意ください。 もし、新しいデプロイにしてしまった場合は、LINEdeveloperのwebhookのアドレスを 新しいウェブアプリのアドレスに変更してください。

image.png

編集ボタンを押し、バージョンを新バージョンに変更してからデプロイボタンを押してください。

image.png

設定が完了しましたらLINEに話かけてみてください!
image.png
問い合わせした内容は先ほどのスプレッドシートに記録されます。

こんな感じで返ってきます。長い文章ほど変な翻訳が返ってきますので是非やってみてください!(童心に返ってから楽しむようにしてください。)

今回作成したLINEbotはこちらです。
お試しでどんなものか遊んでみたい方は是非ご登録お願いいたします。

逆翻訳
https://lin.ee/KsmDCuI
image.png

動かなかったときに確認すること
GAS側
・GASを保存してからデプロイをしているか
・新しいデプロイをしてウェブアドレスが変わってしまっていないか
・LINEdeveloperで発行したアクセストークンを記載しているか

LINEdeveloper側
・webhookにアドレスが設定されているか
・最新のGASのウェブアプリのアドレスがwebhookに設定されているか
・webhookがONになっているか
・アクセストークンが翻訳されたものになっていないか
(表示されている言語がEnglishになっていて、WEBページの翻訳をしてしまうとアクセストークンも変になってしまうので
LINEdeveloperの右下にある言語をEnglishから日本語に変更してからアクセストークンをコピーしてください
最後が【~~w1cDnyilFU=】になったら正解です。以下の画像をご参考にしてください。)

(これ以外にありましたら随時追記していきますので、もし詰まった場合はコメントいただけると助かります。)

image.png

ということで、初めてのQiita記事&アドベントカレンダーでした!
よかったらLGTMボタンをぽちっとお願いします!

14
2
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
14
2