この記事では、Google Apps Script (GAS) を利用して、LINE BOTで「カルーセルテンプレートメッセージ」を送信する方法を解説します。
カルーセルテンプレートは、複数のアイテム(カラム)をカードのように横に並べて表示できるメッセージ形式です。各カードには画像、タイトル、説明文、複数のアクションボタンを設定でき、商品リストやレストランのメニュー紹介など、豊富な情報をインタラクティブに見せたい場合に非常に有効です。
公式ドキュメントはこちらを参照してください。


事前準備
実装を始める前に、以下の準備が必要です。
- チャンネルアクセストークンの取得: LINE Developersコンソールからアクセストークンを取得します。
LINE BOT開発に不可欠なMessaging APIのチャンネルアクセストークンを取得する手順を、実際の画面キャリプチャを交えて詳しく解説します。LINE Developersへの登録からプロバイダー、チャンネル作成、トークン発行までを網羅。
- ユーザーIDの取得: メッセージの送信先となるご自身のLINEユーザーIDを取得します。
Google Apps Script(GAS)を使って、LINE BOTと友だちになっているユーザーのIDを取得する方法を解説します。Webhook経由で送信されるイベント情報から、特定のユーザーを識別するための`userId`を抜き出すサンプルコードを紹介します。
- スクリプトプロパティの設定: 今回のサンプルコードでは、アクセストークンとユーザーIDをスクリプトプロパティに保存して使用します。以下の記事を参考に、
TOKENとDEBUGIDというキーでそれぞれの値を設定してください。
Google Apps Script(GAS)を使って、特定のキーワードに反応するシンプルなLINE BOTを作成する手順を解説します。Googleアカウントさえあれば無料で開発可能。初心者でもコピペで実装できるよう、コードと設定方法を詳しく紹介します。
実装コード
以下の関数は、指定したユーザーにカルーセルテンプレートメッセージを送信します。
/*
カルーセルテンプレートメッセージを送る
-----------------------------*/
function pushmessage_carousel_template() {
/* スクリプトプロパティのオブジェクトを取得 */
const prop = PropertiesService.getScriptProperties().getProperties();
/* カルーセルテンプレートメッセージを送る */
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + prop.TOKEN, // スクリプトプロパティにトークンは事前に追加しておく
},
'method': 'POST',
'payload': JSON.stringify({
"to": prop.DEBUGID, // スクリプトプロパティに送信先IDは事前に追加しておく
"messages": [
{
"type": "template",
"altText": "カルーセルテンプレートメッセージ",
"template": {
"type": "carousel",
"columns": [
{
"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=postback", // 画像のURL
"imageBackgroundColor": "#FFFFFF", // 画像の背景色
"title": "メニュー1",
"text": "ポストバックアクション",
"actions": [
{
"type": "postback",
"label": "ポストバック1",
"data": "action=postback1"
},
{
"type": "postback",
"label": "ポストバック2",
"data": "action=postback2"
}
]
},
{
"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=message", // 画像のURL
"imageBackgroundColor": "#FFFFFF", // 画像の背景色
"title": "メニュー2",
"text": "メッセージアクション",
"actions": [
{
"type": "message",
"label": "Yes",
"text": "Yes"
},
{
"type": "message",
"label": "No",
"text": "No"
}
]
},
{
"thumbnailImageUrl": "https://placehold.jp/640x480.jpg?text=uri", // 画像のURL
"imageBackgroundColor": "#FFFFFF", // 画像の背景色
"title": "メニュー3",
"text": "URIアクション",
"actions": [
{
"type": "uri",
"label": "Yahoo",
"uri": "https://www.yahoo.co.jp/"
},
{
"type": "uri",
"label": "Google",
"uri": "https://www.google.com/"
}
]
}
],
"imageAspectRatio": "rectangle",
"imageSize": "cover"
}
}
],
"notificationDisabled": false // trueだとユーザーに通知されない
}),
});
}
このコードでは、templateのtypeにcarouselを指定し、columns配列に表示したいカードの数だけオブジェクトを追加します。各カード(カラム)には、画像、タイトル、テキスト、そして複数のアクションボタンを設定できます。
動作確認
GASのスクリプトエディタでpushmessage_carousel_template関数を実行すると、LINEにカルーセルメッセージが送信されます。

左右にスワイプすることで、異なるカードを表示できます。
その他のアクションについては、以下の記事で詳しく解説しています。
LINE BOT開発で必須のアクションオブジェクト7種類(ポストバック、メッセージ、URI、日時選択、カメラ、カメラロール、位置情報)の機能と使い方をGoogle Apps Script (GAS) のサンプルを交えて徹底解説。それぞれの違いや最適な使い分けがわかります。
まとめ
今回は、GASを使ってLINE BOTでカルーセルテンプレートメッセージを送信する方法を解説しました。多くの情報を整理して見せることができるため、ユーザーにとって分かりやすく、魅力的なBOTを作成するのに役立ちます。

