こんにちは!今回は、GAS初心者の私がGASでbitlyのLINE BOTを作ってみた、というお話です。
準備
bitly
bitlyのアカウントでログインして、アクセストークンを作成します。https://bitly.is/accesstoken
アカウントを持っていなかったらサインアップしましょう。OAuthを使うとパスワードの入力画面で苦戦するので、Emailでのサインアップをおすすめします。
パスワードを入力すると、アクセストークンが表示されます。必ずメモしておきましょう。
LINE Developers
https://developers.line.biz/console/にアクセスしてログインします。
LINE Business IDと出ていますが、普段お使いのLINEアカウントでログインしてしまって構いません。
ログインしたら、プロバイダーを作成して、Messaging APIのチャネルも作成しましょう。
続けてチャネルの詳細を入力しましよう。
チャネル名、チャネル説明はわかれば大丈夫だと思います。プライバシーポリシーURLなどは任意です。
チャネルが作成できたら「Messaging API 設定」のタブに移動して、「応答メッセージ」、「あいさつメッセージ」を無効にします。
2項目を無効にできたら、さらにその下にある、「チャネルアクセストークン(長期)」を発行します。
発行したら先程と同様にメモしておいてください。
構造
実装
プロジェクト作成
Google Apps Scriptから「新しいプロジェクト」を作成します。
コード
GASのエディタが開いたら、すでに入力されている function myFunction( ) は削除し、以下のコードを記入してください。
各種アクセストークンの入力も忘れずに。(CHANNEL_ACCESS_TOKEN
、baseUrl
)
var CHANNEL_ACCESS_TOKEN = '[LINE Messaging APIのチャネルアクセストークン]';
function doPost(e) {
var post_json = JSON.parse(e.postData.contents);
//返信用のトークン取得
var reply_token = post_json.events[0].replyToken;
if (typeof reply_token === 'undefined') {
return;
}
var message = post_json.events[0].message.text;
var url = 'https://api.line.me/v2/bot/message/reply';
// --------- Bitly API ------------
let baseUrl = 'https://api-ssl.bitly.com/v3/shorten?access_token=[Bitlyのアクセストークン]&longUrl=';
let apiUrl = baseUrl + message;
// json形式で取得
var response = UrlFetchApp.fetch(apiUrl);
var json = JSON.parse(response.getContentText());
// urlを取り出す
var getData = json['data']['url'];
var reply_text = getData;
UrlFetchApp.fetch(url, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
// ↓ここのスペースは詰めないように注意!
'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': [{
'type': 'text',
// 返信するメッセージを指定
'text': reply_text,
}],
}),
});
return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
Webhook URLの設定
GAS側の操作
GASのエディタが最新のものになっている場合は、右上の「以前のエディタを使用」を押して、移動した方が操作しやすいかもしれません。
メニューバーの「公開」>「ウェブ アプリケーションとして導入」をクリックして、以下の画像のように変更して、デプロイ。
許可を求められますが、「許可を確認」をクリックして許可します。
Googleアカウントを選択すると、注意画面が出ますが、「左下の詳細を表示」>「[プロジェクト名](安全ではないページ)に移動」をクリックして進みます。
この先もGoogleアカウントへのアクセスを許可するか聞いてきますが、許可して続けてください。
このまま続けると、以下のような画面が表示されるので、このURLをコピーしておきます。
LINE Developers側の操作
LINE DevelopersのMessaging API設定のWebhook URLにGASでコピーしたURLをペーストします。
ペーストしたものが表示されたら、「Webhookの利用」スイッチをオンにします。
最後に、Webhook設定の上にあるQRコードをスキャンして、LINEの友達追加すれば、いよいよです。
テスト
注意点
ただし、注意点もあります。http://
やhttps://
が含まれないURLを送信するとbotは反応してくれません...
まだまだ改善の余地はありそうです。
最後に
途中でデプロイする前にバージョンをnewにし忘れたりなんかでかなり時間がかかってしまいました ><
今回、ほとんどSwiftしか触っていない人間がGASを使ってみましたが、Swiftと比べて記述方法が頻繁に変わらない(?)のが羨ましいところです。
また今度http://
やhttps://
の問題も修正してみようかなと思います。
最後までご覧いただき、ありがとうございました。
参考
https://tonari-it.com/gas-json-weather/
https://note.com/nkr_bet365/n/n4a93f5004510
https://qiita.com/shintarow/items/d53986e873d962f7a3c8