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

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

新規登録して質問してみよう
ただいま回答率
85.32%
Google Apps Script

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

Q&A

解決済

1回答

231閲覧

if文の追加がわからない

Tsubanishi

総合スコア45

Google Apps Script

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

0グッド

1クリップ

投稿2025/03/06 12:28

実現したいこと

LINEbotでアンケートを作成しました。アンケートのA、B、C、Dとありどれかを選択したらそれぞれ別の文字のtextとemojisが送られます。
A、B、Cを選択した場合のみ、textとemojisと一緒に作成したflexmessageも送られるようにしたい。

GAS

1function handlePostback(e) { 2 const postbackData = e.postback.data; 3 if (postbackData === "A") { 4 replyToLine(e.replyToken, { 5 type: "text", 6 type: "text", 7 text: "$ ご回答ありがとうございます。$すべての種別で登録しました。$これから###に関わるすべての情報を配信しますね$####会員限定、下記特別チケット画像をクリックしクーポンを1階又は2階フロントでご提示ください$特別チケット1枚と交換いたします$", 8 emojis: [ 9 { index: 0, productId: "5ac1bfd5040ab15980c9b435", emojiId: "191" }, 10 { index: 16, productId: "5ac1bfd5040ab15980c9b435", emojiId: "193" }, 11 { index: 31, productId: "5ac1bfd5040ab15980c9b435", emojiId: "195" }, 12 { index: 56, productId: "5ac1bfd5040ab15980c9b435", emojiId: "196" }, 13 { index: 105, productId: "5ac1bfd5040ab15980c9b435", emojiId: "192" }, 14 { index: 122, productId: "5ac1bfd5040ab15980c9b435", emojiId: "194" } 15 16 ] 17 }); 18 } else if (postbackData === "B") { 19 replyToLine(e.replyToken, { 20 type: "text", 21 type: "text", 22 text: "$ ご回答ありがとうございます。$#####&#######で登録しました$これから########の###################に空きが出た場合にお知らせを配信しますね$", 23 emojis: [ 24 { index: 0, productId: "5ac1bfd5040ab15980c9b435", emojiId: "088" }, 25 { index: 16, productId: "5ac1bfd5040ab15980c9b435", emojiId: "089" }, 26 { index: 37, productId: "5ac1bfd5040ab15980c9b435", emojiId: "093" }, 27 { index: 87, productId: "5ac1bfd5040ab15980c9b435", emojiId: "094" } 28 ] 29 }); 30 } else if (postbackData === "C") { 31 replyToLine(e.replyToken, { 32 type: "text", 33 type: "text", 34 text: "$ ご回答ありがとうございます。$すべての種別で登録しました。$これから###に関わるすべての情報を配信しますね$####会員限定、下記特別チケット画像をクリックしクーポンを1階又は2階フロントでご提示ください$特別チケット1枚と交換いたします$", 35 emojis: [ 36 { index: 0, productId: "5ac1bfd5040ab15980c9b435", emojiId: "077" }, 37 { index: 16, productId: "5ac1bfd5040ab15980c9b435", emojiId: "080" }, 38 { index: 37, productId: "5ac1bfd5040ab15980c9b435", emojiId: "082" }, 39 { index: 66, productId: "5ac1bfd5040ab15980c9b435", emojiId: "085" }, 40 { index: 115, productId: "5ac1bfd5040ab15980c9b435", emojiId: "076" }, 41 { index: 132, productId: "5ac1bfd5040ab15980c9b435", emojiId: "080" } 42 ] 43 }); 44 } else if (postbackData === "D") { 45 replyToLine(e.replyToken, { 46 type: "text", 47 type: "text", 48 text: "$ ご回答ありがとうございます。$#############で登録しました$############に空きが出た場合にお知らせを配信しますね$", 49 emojis: [ 50 { index: 0, productId: "5ac1bfd5040ab15980c9b435", emojiId: "066" }, 51 { index: 16, productId: "5ac1bfd5040ab15980c9b435", emojiId: "068" }, 52 { index: 37, productId: "5ac1bfd5040ab15980c9b435", emojiId: "073" }, 53 { index: 70, productId: "5ac1bfd5040ab15980c9b435", emojiId: "074" } 54 ] 55 }); 56 57 if (["A", "B", "C"].includes(postbackData)) { 58 messages.push(flex_message); 59 } 60 61 if (messages.length > 0) { 62 replyToLine(e.replyToken, messages); 63 } 64} 65
const flex_message = { "type": "bubble", "hero": { "type": "image", "url": "#############", "size": "full", "aspectRatio": "15:15", "aspectMode": "cover", "margin": "none" }, "body": { "type": "box", "layout": "vertical", "spacing": "md", "action": { "type": "uri", "uri": "######" }, "contents": [ { "type": "text", "text": "チケット", "size": "lg", "weight": "bold", "offsetTop": "none", "align": "center" }, { "type": "text", "text": "お一人様一回までのご利用になります", "wrap": true, "color": "#808080", "size": "xxs", "align": "center", "margin": "xs" } ] }, "footer": { "type": "box", "layout": "vertical", "contents": [ { "type": "button", "style": "primary", "color": "#191970", "margin": "none", "action": { "type": "uri", "label": "クーポンはこちら", "uri": "######" } } ] } };

発生している問題・分からないこと

GAS

1if (["A", "B", "C"].includes(postbackData)) { 2 messages.push(flex_message); 3 } 4 5 if (messages.length > 0) { 6 replyToLine(e.replyToken, messages); 7 }

上記のcodeが間違ってると思うのですがわかりません.

if (["A", "B", "C"].includes(postbackData)) {
messages.push(JSON.parse(JSON.stringify(flex_message)));
}
if (messages.length > 0) {
replyToLine(e.replyToken, messages);
}
こちらに書き換えてもても出ませんでした。

該当のソースコード

Google

1if (["A", "B", "C"].includes(postbackData)) { 2 messages.push(flex_message); 3 }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

上記codeを入れた場合、flex messageは出ませんでした。ただtextとemojisは出ます。

補足

特になし

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

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

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

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

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

YAmaGNZ

2025/03/06 12:39

} else if (postbackData === "D") { このif文が if (["A", "B", "C"].includes(postbackData)) { の前で閉じられていないのではないですか?
Tsubanishi

2025/03/06 13:13

コメントありがとうございます。修正しました。 }if (["全部", "メンバー&スクール", "メンバー会員"].includes(postbackData)) { messages.push(flex_message); } if (messages.length > 0) { replyToLine(e.replyToken, messages); } こういう意味でしょうか?
YAmaGNZ

2025/03/06 22:10

少し違います 提示されているコードは下記のようになっていました。 if ( A?) { } else if (B?) { } else if (C?) { } else if (D?) {  if (A?B?C?) {  } } これを if ( A?) { } else if (B?) { } else if (C?) { } else if (D?) { } if (A?B?C?) { } こうなのではないかということです。 提示されたコードは少し修正されているみたいですし、その部分が変わってないか元のコードとも比較してみてください。 これだけではないですが、ログを出力するなどして値がどうなっているのか、どこの部分が実行されているのかなどを確認してみましょう。
YAmaGNZ

2025/03/06 22:16

またメッセージはまずは無条件で送信したい物を送信して構築したメッセージが正しいのかを確認してから組み込むほうがいいです。 そうしないとロジックが悪くてその箇所を通らないのか通るけどメッセージが正しくないので送信されないのか切り分けしやすいです。
guest

回答1

0

自己解決

下記でできるようになりました。
}
if (["A", "B", "C"].includes(postbackData)) {
messages.push(flex_message);
}

if (messages.length > 0) {
replyToLine(e.replyToken, messages);
}

投稿2025/03/21 02:59

Tsubanishi

総合スコア45

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問