質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

170閲覧

GAS lineBOTのdoPost(e)で2個のコードを1個にまとめる方法

TK86

総合スコア0

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2023/03/07 08:09

java初心者になります。
下記のコードを2種類書くので、その2つが同時に動くように1つのコードに修正したいのですがどのようにすればよろしいでしょうか。
1個目はスプレッドシートの語句に反応して、BOTで返信する
2個目はカルセールテンプレートになります。
雑な質問で申し訳ありませんがよろしくお願いいたします。

******************************
1個目

var CHANNEL_ACCESS_TOKEN = '’

//LINE Messaging APIからPOST送信を受けたときに起動する
// e はJSON文字列
function doPost(e){
if (typeof e === "undefined"){
//動作を終了する
return;
} else {
//JSON文字列をパース(解析)し、変数jsonに格納する
var json = JSON.parse(e.postData.contents);

//変数jsonを関数replyFromSheetに渡し、replyFromSheetを実行する replyFromSheet(json)

}
}

//返信用の関数replyFromSheet
// data には変数jsonが代入される
function replyFromSheet(data) {
//返信先URL
var replyUrl = "https://api.line.me/v2/bot/message/reply";

//★★スプレッドシートID★★
var ss = SpreadsheetApp.openById("");

//★★シート名★★
var sh = ss.getSheetByName("");

//シートの最終行を取得する
var lastRow = sh.getLastRow();

//シートの全受信語句と返信語句を二次元配列で取得する
var wordList = sh.getRange(1,1,lastRow,2).getValues();

//受信したメッセージ情報を変数に格納する
var reply_token = data.events[0].replyToken; //reply token
var text = data.events[0].message.text; //ユーザーが送信した語句

//返信語句を格納するための空配列を宣言する
var replyTextList = [];

//LINEで受信した語句がシートの受信語句と同じ場合、返信語句をreplyTextにpushする
for(var i = 1; i < wordList.length; i++) {
if(wordList[i][0] == text) {
replyTextList.push(wordList[i][1]);
}
}

//LINEで受信した語句がシートの受信語句と一致しない場合、関数を終了する
if(replyTextList.length < 1) {
return;

//replyTextListのLengthが5より大きい場合、messageLengthを5にする
//※※一度に最大5つの吹き出ししか返信できないためです※※
} else if(replyTextList.length > 5) {
var messageLength = 5;
} else {
var messageLength = replyTextList.length;
}

//"messages"に渡す配列を格納するための空配列を宣言する
//[{"type": "text", "text": "返信語句その1"},{"type": "text", "text": "返信語句その2"}....]
var messageArray = [];

//replyTextListに格納されている返信語句を最大5つ、messageArrayにpushする
for(var j = 0; j < messageLength; j++) {
messageArray.push({"type": "text", "text": replyTextList[j]});
}

var headers = {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN,
};

var postData = {
"replyToken": reply_token,
"messages": messageArray
};

var options = {
"method" : "post",
"headers" : headers,
"payload" : JSON.stringify(postData)
};

//LINE Messaging APIにデータを送信する
UrlFetchApp.fetch(replyUrl, options);
}

***********************************
2個目のコード

function doPost(e) {
var events = JSON.parse(e.postData.contents).events;
events.forEach(function(event) {
if (event.type == 'message' && event.message.type == 'text' && event.message.text == '質問') {
sendQuestionCarousel(event.replyToken);
}else if (event.message.text == '参加') {
sendJoinCarousel(event.replyToken);
}
});
}

function sendQuestionCarousel(replyToken) {
var accessToken = '';
var url = 'https://api.line.me/v2/bot/message/reply';
var carousel = createCarousel();
var requestData = {
"replyToken": replyToken,
"messages": [
{
"type": "template",
"altText": "カルーセルテンプレート",
"template": {
"type": "carousel",
"columns": carousel
}
}
]
};
var headers = {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + accessToken
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(requestData)
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}

function sendJoinCarousel(replyToken) {
var accessToken = '';
var url = 'https://api.line.me/v2/bot/message/reply';
var carousel = createJoinCarousel();
var requestData = {
"replyToken": replyToken,
"messages": [
{
"type": "template",
"altText": "カルーセルテンプレート",
"template": {
"type": "carousel",
"columns": carousel
}
}
]
};
var headers = {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + accessToken
};
var options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify(requestData)
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}

function createCarousel() {
var card1 = {
"thumbnailImageUrl": "",
"imageBackgroundColor": "#FFFFFF",
"title": "作り方",
"text": "1の説明を読んでも分からなかったら、再度2を押してください",
"actions": [
{
"type": "uri",
"label": "1:アクション1",
"uri": ""
},
{
"type": "message",
"label": "アクション2",
"text": "アクション2が選択されました"
}
]
};

var card2 = {
"thumbnailImageUrl": "https://example.com/image2.jpg",
"title": "カード2のタイトル",
"text": "カード2の説明文",
"actions": [
{
"type": "message",
"label": "アクション3",
"text": "アクション3が選択されました"
},
{
"type": "uri",
"label": "アクション4",
"uri": "https://example.com/action4"
}
]
};

var cards = [card1, card2];

var carousel = [];
for (var i = 0; i < cards.length; i++) {
carousel.push({
"thumbnailImageUrl": cards[i].thumbnailImageUrl,
"title": cards[i].title,
"text": cards[i].text,
"actions": cards[i].actions
});
}

return carousel;
}

function createJoinCarousel() {
var card1 = {
"thumbnailImageUrl": "https://example.com/image1.jpg",
"title": "カルテ",
"text": "カルテを更新してください",
"actions": [
{
"type": "uri",
"label": "1:アクション1",
"uri": ""
},
{
"type": "message",
"label": "アクション2",
"text": "アクション2が選択されました"
}

]

};

var card2 = {
"thumbnailImageUrl": "https://example.com/image2.jpg",
"title": "カード2のタイトル",
"text": "カード2の説明文",
"actions": [
{
"type": "message",
"label": "アクション3",
"text": "アクション3が選択されました"
},
{
"type": "uri",
"label": "アクション4",
"uri": "https://example.com/action4"
}
]
};

var cards = [card1, card2];

var carousel = [];
for (var i = 0; i < cards.length; i++) {
carousel.push({
"thumbnailImageUrl": cards[i].thumbnailImageUrl,
"title": cards[i].title,
"text": cards[i].text,
"actions": cards[i].actions
});
}

return carousel;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問