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

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

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

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

3456閲覧

GASとLine messaging apiを用いて、スプレットシートに受け取ったメッセージを書き込む方法

HaradayUfo

総合スコア5

LINE Messaging API

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

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/02/28 16:05

編集2020/03/01 14:10

前提・実現したいこと

GASとLine messaging apiを用いてスプレッドシートに、受け取ったメッセージを書き込む
機能を作りたいのですが、うまく動作させることができません。

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

GASの実行数の項目からは、失敗しましたとだけ表示され、
一部は、不明と書かれていました。

該当のソースコード

GAS

1//LINE Developersで取得したアクセストークンを入れる 2var CHANNEL_ACCESS_TOKEN = 'token'; 3var line_endpoint = 'https://api.line.me/v2/bot/message/reply'; 4 5function doPost(e) { 6 var json = JSON.parse(e.postData.contents); 7 8 var reply_token= json.events[0].replyToken; 9 if (typeof reply_token === 'undefined') { 10 return; 11 } 12 13 //送られたメッセージ内容を取得 14 var message = json.events[0].message.text; 15 16//出力部分 17 emo(message); 18 19 // メッセージを返信 20 UrlFetchApp.fetch(line_endpoint, { 21 'headers': { 22 'Content-Type': 'application/json; charset=UTF-8', 23 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, 24 }, 25 'method': 'post', 26 'payload': JSON.stringify({ 27 'replyToken': reply_token, 28 'messages': [{ 29 'type': 'text', 30 'text': message, 31 }], 32 }), 33 }); 34 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 35 36} 37 38 39function emo(message) { 40 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('talk'); 41 var lastRow1 = sheet.getRange(1, 3).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()//修正部分①UPをDOWNに修正 42 sheet.getRange(lastRow1+1, 3).setValue(message); 43}

試したこと

関数に分けずに、dopostないに書き込んで見たり
返信部分を削除してみたりして見ましたが、書き込めませんでした。
なお、OAUTHは通っているので、sheet.getRange(1, 3).setValue(”message”);
としてみた所、該当セルに確かに、messageと入力されていました。

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

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

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

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

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

papinianus

2020/02/28 23:56

> OUTHは通っているので、 意味が理解できません。OUTHはここにしか登場しません。どこで何をしたのですか?
HaradayUfo

2020/02/29 03:30

表現が誤りでしたので訂正いたします。 GASからスプレッドシートに書き込み等を行うために最初に行う認証のことを指します。
CHERRY

2020/03/01 10:03

> GASからスプレッドシートに書き込み等を行うために最初に行う認証のことを指します。 OAuth ですか??
HaradayUfo

2020/03/01 14:10

あ、Aの入力完全に忘れてました。 Oauthです。
guest

回答2

0

ベストアンサー

私が活用しているスプレッドシートでソースをコピペしてみたところ、うまくいきましたよ。
(シート名修正+メッセージ返信部分は省略した)

イメージ説明

LINE Developersの設定が正しくないのではないでしょうか。
Webhook URLとか。

投稿2020/03/01 02:04

mo256man

総合スコア43

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

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

HaradayUfo

2020/03/03 14:04

Webhook URLの設定を変えてみましたが効果がなく、 GasのURL自体が変なのかと思い新しくプロジェクトを作成したところうまくうごきました
guest

0

最終行を求めたいのならばgetNextDataCell(SpreadsheetApp.Direction.UP)の部分は
UPではなくDOWNだと思います。
メッセージ、最終行の3列目でなくセル(2,3)あたりに書き込まれていませんか。

投稿2020/02/29 06:15

mo256man

総合スコア43

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

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

HaradayUfo

2020/02/29 14:58

確かに間違っていましたので修正して試してみたのですが、 やはり書き込むことができませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問