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

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

新規登録して質問してみよう
ただいま回答率
85.37%
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

解決済

1回答

1215閲覧

GAS クイックリプライを実装したい

SN____R

総合スコア8

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グッド

0クリップ

投稿2021/07/10 14:47

前置き:エラーが重なり読みにくく、自分自身も混乱してきてしまったので質問のし直しを行いました。

現在、LINE用のbotを作成しているのですが、if文で設定した語句を入力すると返信とクイックリプライが送られてくるというものを実装したいです。
しかし、SyntaxError: Unexpected token '}'(行 143、ファイル「コード.gs」)
という表示が起きてしまい、うまくいきません。
初心者なので分からない部分も多々ありますが、ご教授のほどよろしくお願いいたします。

JAVAscript

1var ACCESS_TOKEN = "XXXXXXX="; 2var URL = "https://api.line.me/v2/bot/message/reply"; 3var SS_ID = "XXXXXXXXX"; 4var PUSH = "https://api.line.me/v2/bot/message/push"; 5var REPLY = "https://api.line.me/v2/bot/message/reply"; 6var line_endpoint = 'https://api.line.me/v2/bot/message/reply'; 7var ID = '1CIyC69Mn7mCOgLpW2wObf_fVMDLD301kVYwTs4QsCKg/'; 8var HistorySheet = SpreadsheetApp.openById(SS_ID).getSheets()[0]; 9 10function doPost(e) { 11 var contents = e.postData.contents; 12 var obj = JSON.parse(contents); 13 var events = obj["events"]; 14 for (var i = 0; i < events.length; i++) { 15 if (events[i].type == "message" && events[i].message.type == "text") { 16 reply_message(events[i]); 17 } 18 } 19} 20 21function reply_message(e) { 22 var input_text = e.message.text; 23 var reply_text = ""; 24 const userId = e.source.userId; 25 const history = getLastUserHistory(userId); 26 27 if (history && history.continuous) { 28 if (history.text == "70%*2") { 29 reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です"; 30 } else if (history.text == "50%*2") { 31 reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です"; 32 } else if (history.text == "70%*50%") { 33 reply_text = input_text + " の 軽減率70%×50%での実質HPは\n約 " + Math.floor(input_text / 0.15) + "です"; 34 } else if (history.text == "25%*2") { 35 reply_text = input_text + " の 軽減率25%×25%での実質HPは\n約 " + Math.floor(input_text / 0.5625) + "です"; 36 } else if (history.text == "75%*2") { 37 reply_text = input_text + " の 軽減率75%×75%での実質HPは\n約 " + Math.floor(input_text / 0.0625) + "です"; 38 } else if (history.text == "50%*2+30%*2") { 39 reply_text = input_text + " の 軽減率50%×50%×30%×30%での実質HPは\n約 " + Math.floor(input_text / 0.1225) + "です"; 40 } else if (history.text == "50%*2+25%") { 41 reply_text = input_text + " の 軽減率50%×50%×25%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です"; 42 } else if (history.text == "25%+50%*2") { 43 reply_text = input_text + " の 軽減率25%×50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です"; 44 } else if (history.text == "35%*2") { 45 reply_text = input_text + " の 軽減率35%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です"; 46 } else if (history.text == "35%*25%") { 47 reply_text = input_text + " の 軽減率35%×25%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です"; 48 } else if (history.text == "25%*35%") { 49 reply_text = input_text + " の 軽減率25%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です"; 50 } 51 setLastUserHistory(userId, input_text, false); 52 } 53 else { 54 if (input_text == "70%*2") { 55 reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 56 } else if (input_text == "50%*2") { 57 reply_text = "軽減率50%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 58 } else if (input_text == "70%*50%") { 59 reply_text = "軽減率70%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 60 } else if (input_text == "25%*2") { 61 reply_text = "軽減率25%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 62 }else if (input_text == "75%*2") { 63 reply_text = "軽減率75%×75%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 64 }else if (input_text == "50%*2+30%*2") { 65 reply_text = "軽減率50%×50%×30%×30%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 66 } else if (input_text == "35%*2") { 67 reply_text = "軽減率35%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 68 }else if (input_text == "50%*2+25%") { 69 reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 70 }else if (input_text == "25%+50%*2") { 71 reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 72 }else if (input_text == "25%*35%") { 73 reply_text = "軽減率25%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 74 }else if (input_text == "35%*25%") { 75 reply_text = "軽減率35%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。"; 76 } 77 if (reply_text) { 78 setLastUserHistory(userId, input_text, true); 79 } 80 else { 81 setLastUserHistory(userId, input_text, false); 82 } 83 } 84 85 var postData = { 86 "replyToken": e.replyToken, 87 "messages": [{ 88 "type": "text", 89 "text": reply_text 90 }] 91 }; 92 93 var options = { 94 "method": "post", 95 "headers": { 96 "Content-Type": "application/json", 97 "Authorization": "Bearer " + ACCESS_TOKEN 98 }, 99 "payload": JSON.stringify(postData) 100 }; 101 const response = UrlFetchApp.fetch(URL, options); 102 if (response.getResponseCode() !== 200) { 103 throw new Error(response.getContentText()); 104 } 105} 106 107function getLastUserHistory(userId) { 108 const userHistory = HistorySheet.getDataRange().getValues(); 109 for (let i = userHistory.length - 1; 0 < i; i--) { 110 if (userHistory[i][1] === userId) { 111 return { 112 date: userHistory[i][0], 113 userId: userHistory[i][1], 114 text: userHistory[i][2], 115 continuous: userHistory[i][3] 116 }; 117 } 118 } 119 return undefined; 120} 121 122function setLastUserHistory(userId, text, continuous) { 123 const values = [new Date(), userId, text, continuous]; 124 HistorySheet.appendRow(values); 125}

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

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

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

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

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

k4a

2021/07/12 15:27 編集

あなたが前に投稿した質問( https://teratail.com/questions/348554 )の回答でdraqさんがコメントしている通り、括弧の対応が間違っています。 最後に'}'をもう一つ追加すればそのエラーはなくなります。 また、重複した質問になっているので削除依頼を送ってください。 https://teratail.com/help#:~:text=%E8%87%AA%E5%88%86%E3%81%AE%E6%8A%95%E7%A8%BF%E3%81%97%E3%81%9F%E8%B3%AA%E5%95%8F%E3%82%84%E5%9B%9E%E7%AD%94%E3%81%AE%E5%89%8A%E9%99%A4%E3%82%92,%E3%81%AE%E3%81%A7%E3%80%81%E4%BA%88%E3%82%81%E3%81%94%E4%BA%86%E6%89%BF%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82 ### 修正 この質問のコードだとそもそもそのエラーが発生していないようです。
SN____R

2021/07/10 20:01

仰る通りですね。 申し訳ございません。原因が判明次第削除させて頂きたいと思います。 過去の質問の方でのエラーとは違い、途中でエラーが起きてしまっています。 function reply_message(e) { の波括弧部分と、 throw new Error(response.getContentText()); } } の最後の波括弧が噛み合わない?みたいで、エラーが起きています。
guest

回答1

0

自己解決

1つの関数が100行を超えてしまったからでした。

投稿2021/07/10 23:56

SN____R

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問