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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

743閲覧

関数の外側に記載しているソースコードはどのタイミングで処理されるのでしょうか?

jimuma

総合スコア23

LINE Messaging API

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/12/07 15:46

前提・実現したいこと

LINE Messaging APIとgoogle Apps Scriptを利用し
LINE BOTに入力した文言をgoogle Spreadsheetに入力しようと思っています。

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

想定通り、LINE BOTで入力した文言をgoogle SpreadsheetのA1セルに入力できたのですが、
試しに「const CHANNEL_ACCESS_TOKEN = "★1"; 」の「★1」の部分を
誤った文字列に書き換えた状態でソースコードを上書き保存しました。

その状態でLINE BOTに文字を入力したところエラーになると想定していたのですが
何故かgoogle SpreadsheetのA1セルにLINE BOTで入力した文字が記載されました。

ソースコードの基本的なルールに関する事でお恥ずかしいのですが、
「doPost」関数より前で宣言している「const CHANNEL_ACCESS_TOKEN = "★1"; 」は
どのタイミングで宣言されたり再度代入し直す事ができるのでしょうか?

追加でもう1つ教えてください。
「const line_endpoint = "https://api.line.me/v2/bot/message/reply";」を記載していますが
これは「google Spreadsheet」に入力するだけでgoogle Apps ScriptからLINE BOTへ
メッセージを返す必要がある場合に必要になる宣言だと思っているのですが合ってますか?
(変数の定義をコメントアウトした状態でLINE BOTを実行すると正常に「google Spreadsheet」に入力されましたが、
この結果が
「line_endpoint」はLINE BOTへの返信時にのみ必要で「google Spreadsheet」のに入力には関係ない、なのか
再実行されていない為過去に宣言されたままの状態が有効になっている為「google Spreadsheet」に入力できている、なのか判断がつきません。)

該当のソースコード

//LINE developerで登録をした、CHANNEL_ACCESS_TOKENを入力する const CHANNEL_ACCESS_TOKEN = "★1"; //const line_endpoint = "https://api.line.me/v2/bot/message/reply"; function doPost(e) { //SpreadSheetの取得 const sheetName = "202201"; const SS = SpreadsheetApp.openByUrl("自分のSpreadsheetのURLを記載します。"); //SpreadsheetのURL const sheet = SS.getSheetByName(sheetName); //Spreadsheetのシート名 //POSTデータ取得 const json = JSON.parse(e.postData.contents); //LINEメッセージを取得 const user_message = json.events[0].message.text; //セルに入力 sheet.getRange(1, 1).setValue(user_message); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

「doPost」関数より前で宣言している「const CHANNEL_ACCESS_TOKEN = "★1"; 」は

どのタイミングで宣言されたり再度代入し直す事ができるのでしょうか?

doPostが実行される前に定義されると思っておいて大丈夫です。
またconstで宣言しているので、再代入することはできません。

試しに「const CHANNEL_ACCESS_TOKEN = "★1"; 」の「★1」の部分を

誤った文字列に書き換えた状態でソースコードを上書き保存しました。
その状態でLINE BOTに文字を入力したところエラーになると想定していたのですが
何故かgoogle SpreadsheetのA1セルにLINE BOTで入力した文字が記載されました。

コードを見てもらえればわかりますが、コード中でCHANNEL_ACCESS_TOKEN は使われていません。
よってどんな値をいれても特にエラーはおこりません。

「const line_endpoint = "https://api.line.me/v2/bot/message/reply";」を記載していますが

これは「google Spreadsheet」に入力するだけでgoogle Apps ScriptからLINE BOTへ
メッセージを返す必要がある場合に必要になる宣言だと思っているのですが合ってますか?

あっています。

js

1const CHANNEL_ACCESS_TOKEN = "★1"; 2const line_endpoint = "https://api.line.me/v2/bot/message/reply";

この2行に関しては、GAS→LINEの場合に必要ですが、LINE→GASの場合には必要ありません。
そのため、今回の処理「LINE BOTに入力した文言をgoogle Spreadsheetに入力する」ではLINE→GASのみのため、不要となります。

投稿2021/12/07 23:34

macaron_xxx

総合スコア3191

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

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

jimuma

2021/12/08 01:41

ご回答ありがとうございました。 大分理解が出来ました。 「const line_endpoint = "https://api.line.me/v2/bot/message/reply";」については 「LINE→GASの場合には必要ありません。」との事ですが、 再度GAS側で別プロジェクトで試したところ必要なようでしたので残すことにしました。 「const CHANNEL_ACCESS_TOKEN = "★1"; 」は不要でした。 ありがとうございました。
macaron_xxx

2021/12/08 01:59

おそらく必要なパターンはLINE→GAS→LINEとしているのではないでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問