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

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

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

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

Q&A

解決済

1回答

1204閲覧

doPost(e)の中身を見るためのファイルの保存方法

etrisotoko777

総合スコア25

Google Apps Script

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

0グッド

0クリップ

投稿2020/03/27 08:14

GAS上でオウム返しのLINEBotをネット上のソースコードを元に作りました。
コード内のdoPost(e)の中身が気になり、見る方法を調べたところ

こちらの質問
https://teratail.com/questions/59405
にて、
・ファイルに保存する
・MailApp.sendEmailでメールを送る
という解決策が最も評価をもらっていたので、こちらを試そうと思いました。

しかし、まず「ファイルに保存する」ということが分かりません。
通常のファイル保存で問題ないのでしょうか?

また、そのようにした場合、
新たに関数を作りMailApp.sendEmailで自分のemailアドレスに送る際、
doPost(e)の中身(の入っているファイル)をどのように指定すればよろしいでしょうか?

gs

1function doPost(e){ 2// 3} 4 5function sendMail { 6 MailApp.sendEmail({to:toAdr,, subject:subject, name:name, body:body,attachments:files}); 7}

LINEBotのコード

gs

1 2var ACCESS_TOKEN = 'LINE側で生成したアクセストークン'; 3 4function doPost(e) { 5 // WebHookで受信した応答用Token 6 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 7 // ユーザーのメッセージを取得 8 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; 9 // 応答メッセージ用のAPI URL 10 var url = 'https://api.line.me/v2/bot/message/reply'; 11 12 UrlFetchApp.fetch(url, { 13 'headers': { 14 'Content-Type': 'application/json; charset=UTF-8', 15 'Authorization': 'Bearer ' + ACCESS_TOKEN, 16 }, 17 'method': 'post', 18 'payload': JSON.stringify({ 19 'replyToken': replyToken, 20 'messages': [{ 21 'type': 'text', 22 'text': userMessage + 'ンゴ', 23 }], 24 }), 25 }); 26 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 27} 28

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

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

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

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

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

guest

回答1

0

ベストアンサー

退会済みユーザさんのものが最も簡単で最も有効です。

以前は Logger.logは手動実行したときのログしか見れませんでしたが、stackdriverができてからトリガーで実行したログが後から見れるようになったので、ファイルやメールにする意味がないです。

4年も前の回答は参考になりません。

投稿2020/03/27 10:18

papinianus

総合スコア12705

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

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

papinianus

2020/03/27 10:21

回答は3年前でした。 永続的に残したいならCeccoさんの回答がちゃんと動きそうです。
etrisotoko777

2020/03/27 10:48

ご回答ありがとうございます。 Cecco様の紹介されていたコード var ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートを取得 var sheet = ss.getSheetByName("シート名");//シート名でシートを取得 sheet.getRange(1,1).setValue(e.messege.text);//シートのA1セルにメッセージのテキストを取得 をそのままdoPost(e)内のreturn文の後に追加しましたが、 新しいシートが作成されずメッセージも転写できませんでした。 doPostとは別に関数(たとえばfunction getMessege)を作り、 LINEbotの起動(メッセージを送って、メッセ―ジが返された)後に、 getMessege関数を起動する、といった方法でするのでしょうか?
papinianus

2020/03/27 11:03

いいえ。doPost 内でできます。 そのコードではシートは作成されません。手で作ってください。insertSheetをすることは可能ですが、ラインボットが作りたいのならそんな無駄なことをせずにシート名という名前のシートを作れば済みます。 繰り返しますが Logger.log が最も簡単です。
etrisotoko777

2020/03/27 12:25

ありがとうございます。 doPost(e)内にコードを移して、ss.getSheetByName内のシートの名前を「シート1」から「シート名」に変更しましたが、動きませんでした。 var ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートを取得 var sheet = ss.getSheetByName("シート名");//シート名でシートを取得 sheet.getRange(1,1).setValue(e.messege.text);//シートのA1セルにメッセージのテキストを取得 また、Loger.logをdoPost(e)内に書いたのですが、ラインbotにメッセージを送信した後で「ログ」を確認しても、このエディタ セッションで実行された関数はありません。とだけ表示されます。 コードはLoger.log(e);と書きました。
etrisotoko777

2020/03/27 13:11 編集

Logger.logでしたね。再度試してみます。 Logger.log(e);としてもログが表示されないです。 再追記】sheetに出す方法は、(e.postData.contents);に直すことで表示できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問