※LIFF V2は以下の手順とは異なります。
で作ったアプリをLINE上に表示してみます
このように
作る手順
- HtmlServiceでWebアプリ(画面に表示するページ)を作る [GASアプリ1]
- チャネルを作る [LINE チャネル基本設定]
- そのチャネルにGASアプリ1を登録してappIdを取得する [コマンドライン]
- 特定のテキストが投稿されたらappIdを返すアプリを作る [GASアプリ2]
- webhookを有効にしてGASアプリ2のURLを設定する [LINE チャネル基本設定]
1.HtmlServiceでWebアプリ(ページ)を作成する
コード.gsfunction doGet(e) {
return HtmlService.createHtmlOutputFromFile("index")
.addMetaTag("viewport", "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0");
}
| 意訳この機能がやること 指定したHTMLファイルを表示する メタタグのviewportを追加する |
index.html<!DOCTYPE html>
<html>
<body>
<button id="bt">button</button>
<script>
document.getElementById("bt").onclick = bt_clicked;
function bt_clicked(){
alert("clicked!");
}
</script>
</body>
</html>
| 意訳ボタンを配置する ボタンがクリックされたらbt_clickedを実行する この機能がやること clicked!という文字列をアラートに出す |
HTMLファイルを新規作成して
indexという名前にして
htmlを書いて保存する
ウェブアプリケーションとして導入...
バージョンの説明を入力:first version
次のユーザーとしてアプリケーションを実行:自分
アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
現在のウェブアプリケーションのURLを控えておく
2.チャネルを作成する
LINE Developersコンソールにログインしてチャネルを作成して
チャネルアクセストークンを取得する
https://developers.line.me/ja/docs/liff/getting-started/
LINE BOTの作り方
3.2のチャネルに1で作ったWebアプリを登録する
これはコマンドラインで実行
https://engineering.linecorp.com/ja/blog/detail/299
で書かれているように以下のコマンドをターミナルやiTermなどで実行する
以下のコマンド内で設定する箇所
curl -XPOST \
-H "Authorization: Bearer チャネルアクセストークン" \
-H "Content-Type: application/json" \
-d '{
"view": {
"type": "SIZE_OF_LIFF",
"url": "WebアプリのURL"
}
}' \
https://api.line.me/liff/v1/apps
|
以下のような形でappIdが返って来たら登録完了
{"liffId":"appId"}
4.特定のテキストが投稿されたらappIdを返すアプリを作る
コード.gsvar CHANNEL_ACCESS_TOKEN = "TOKEN";
var appId = "ID";
function doPost(e) {
var contents = e.postData.contents;
var obj = JSON.parse(contents)
var events = obj["events"];
for(var i = 0; i < events.length; i++){
if(events[i].type == "message"){
reply_message(events[i]);
}
}
}
function reply_message(e) {
if (e.message.type == "text") {
if (e.message.text == "hello") {
var postData = {
"replyToken" : e.replyToken,
"messages" : [
{
"type" : "text",
"text" : appId
}
]
};
}
var options = {
"method" : "post",
"headers" : {
"Content-Type" : "application/json",
"Authorization" : "Bearer " + CHANNEL_ACCESS_TOKEN
},
"payload" : JSON.stringify(postData)
};
UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}
}
|
5.webhookを有効にしてGASアプリ2のURLを設定する
LINE BOTの作り方>10.「Use webhooks」の「編集ボタン」をクリックします
試してみる
hello と送るとappIdのリンクが返ってくる
リンクをクリックすると作ったHTMLがLINEの画面内に表示される
関連記事
補足
LIFFで表示したHTML内のボタンを押したときなどにトーク画面へメッセージを返すこともできますが、以下のindex.htmlでは Could not authenticate LIFF app, Error が出てしまいました。
エラー内容でリファレンスを見るとこのように書かれている
ちょっとよくわからない
https://developers.line.biz/ja/reference/liff/
FirebaseのHostingではうまく行ったので、それは別途書こうと思います。
GASのHtmlServiceでエラーが出た index.html
(Developing a LIFF app を参考に開いたときにuserIdを表示して、ボタンを押したときにdisplayNameを返そうと試みた)
参考
LINE Engineering Blog
https://engineering.linecorp.com/ja/blog/detail/299
LINE Developers
https://developers.line.me/ja/
LINE Front-end Framework
https://developers.line.me/ja/docs/liff/
Adding a LIFF app
https://developers.line.me/en/docs/liff/registering-liff-apps/
Getting started with LIFF
https://developers.line.me/en/docs/liff/getting-started/
Developing a LIFF app
https://developers.line.biz/en/docs/liff/developing-liff-apps/
補足
LIFFで表示したHTML内のボタンを押したときなどにトーク画面へメッセージを返すこともできますが、以下のindex.htmlでは Could not authenticate LIFF app, Error が出てしまいました。
エラー内容でリファレンスを見るとこのように書かれている
ちょっとよくわからない
https://developers.line.biz/ja/reference/liff/
FirebaseのHostingではうまく行ったので、それは別途書こうと思います。
GASのHtmlServiceでエラーが出た index.html
(Developing a LIFF app を参考に開いたときにuserIdを表示して、ボタンを押したときにdisplayNameを返そうと試みた)
index.html<!DOCTYPE html>
<html>
<body>
<button id="bt">button</button>
<script src="https://d.line-scdn.net/liff/1.0/sdk.js"></script>
<script>
document.getElementById("bt").onclick = bt_clicked;
liff.init(
function(data) {
const userId = data.context.userId;
alert(userId)
},
function(err) {
alert([err, err.stack])
}
);
function bt_clicked() {
liff.getProfile()
.then(function(profile) {
liff.sendMessages([{
type: 'text',
text: 'From:' + profile.displayName
}])
.then(function() {
liff.closeWindow();
})
.catch(function(error) {
window.alert('Error sending message: ' + error.message);
});
})
}
</script>
</body>
</html>
|
参考
LINE Engineering Blog
https://engineering.linecorp.com/ja/blog/detail/299
LINE Developers
https://developers.line.me/ja/
LINE Front-end Framework
https://developers.line.me/ja/docs/liff/
Adding a LIFF app
https://developers.line.me/en/docs/liff/registering-liff-apps/
Getting started with LIFF
https://developers.line.me/en/docs/liff/getting-started/
Developing a LIFF app
https://developers.line.biz/en/docs/liff/developing-liff-apps/

























