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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

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

Q&A

0回答

1430閲覧

入力された項目と一致する行数を返却したい

Riku5N

総合スコア14

JavaScript

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

0グッド

0クリップ

投稿2020/06/30 11:50

前提・実現したいこと

LineのBotをGASを用いて作っています
参考にしているサイト http://yoshikii.com/entry/linebot-expense/#comment-24

発生している問題・エラーメッセージ

SyntaxError: Unexpected token ';'(行 36)

該当のソースコード

JavaScript

1var global; 2var ACCESS_TOKEN = '2. Messaging APIで発行したアクセストークンを入力'; 3var id = '3. スプレッドシート作成でコピーしたIDを入力'; 4var dateSheet = SpreadsheetApp.openById(id).getSheetByName('3. スプレッドシート作成で作成したスプレッドシートのシート名を入力'); 5var url = 'https://api.line.me/v2/bot/message/reply'; // 応答メッセージ用のAPI URL 6 7/** 8 * doPost 9 * ユーザーがLINEにメッセージ送信した時の処理 10 **/ 11global.doPost = function (e) { 12 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 13 var messageList = userMessage.split(' '); 14 var inputdate = ''; 15 if (messageList[2]) { 16 inputdate = messageList[2]; 17 } 18 var targetRow = getExpenseRow(dateSheet, messageList[0]); 19 var targetColumn = getDateColumn(dateSheet, inputdate); 20 setValue(dateSheet, targetRow, targetColumn, parseInt(messageList[1])); 21 22 // メッセージ返信 23 replyMessage(e); 24 return ContentService.createTextOutput(JSON.stringify({ content: 'post ok' })).setMimeType(ContentService.MimeType.JSON); 25}; 26/** 27 * getExpenseRow 28 * メッセージの支出項目が何行目かを返す 29 **/ 30var getExpenseRow = function (sheet, key) { 31 // 支出項目列取得 32 var expenseData = dateSheet.getRange(2, 1, sheet.getLastRow()).getValues(); 33 expenseData.pop(); // 末尾の不要な要素削除 34 35 // 入力された支出項目と一致する行数を返却 36 for (var index = 0; index < expenseData.length; index++) { 37 if (expenseData[index] == key) { 38 return index + 2; 39 } 40 } 41 return 0; 42}; 43/** 44 * getDateColumn 45 * 支出金額を入力する日付が何列目かを返す 46 **/ 47var getDateColumn = function (sheet, inputDay) { 48 var compareDay = Utilities.formatDate(new Date(), 'JST', 'yyyy/M/d'); 49 50 if (inputDay != '') { 51 var year = new Date().getFullYear(); 52 compareDay = year + "/" + inputDay; 53 } 54 // 日付行取得 55 var dateData = sheet.getRange(1, 2, 1, sheet.getLastColumn()).getValues(); 56 dateData[0].pop(); // 末尾の不要な要素削除 57 58 // 日付フォーマット変換 59 var afterDateData = []; 60 dateData[0].forEach(function (it) { 61 afterDateData.push(Utilities.formatDate(it, 'JST', 'yyyy/M/d')); 62 }); 63 64 for (var index = 0; index < afterDateData.length; index++) { 65 if (afterDateData[index] == compareDay) { 66 return index + 2; 67 } 68 } 69 return 0; 70}; 71/** 72 * setValue 73 * 支出金額を対象セルにセットする 74 **/ 75var setValue = function (sheet, row, column, key) { 76 var oldValue = 0; 77 var newValue = 0; 78 oldValue = sheet.getRange(row, column).getValue(); 79 newValue = key + oldValue; 80 sheet.getRange(row, column).setValue(newValue); 81}; 82/** 83 * replyMessage 84 * メッセージの返信 85 **/ 86var replyMessage = function (e) { 87 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 88 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 89 90 UrlFetchApp.fetch(url, { 91 headers: { 92 'Content-Type': 'application/json; charset=UTF-8', 93 Authorization: 'Bearer ' + ACCESS_TOKEN 94 }, 95 method: 'post', 96 payload: JSON.stringify({ 97 replyToken: replyToken, 98 messages: [ 99 { 100 type: 'text', 101 text: `${userMessage}」を記録したよ!` 102 } 103 ] 104 }) 105 }); 106};

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

mdj

2020/07/01 00:20

36行目で;でエラーなら、<が正しくないような?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問