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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

2148閲覧

LINE公式アカウント GASからのメッセージ送信

katt

総合スコア1

LINE Messaging API

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

Google Apps Script

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

0グッド

0クリップ

投稿2022/05/01 16:19

プログラミング初心者ですが、GASからLINE公式アカウント経由で友だちにメッセージを送信することを試みております。
以下、ネットの拾い物を少々いじったものとなります。

function postMessage() { const url = 'https://api.line.me/v2/bot/message/push'; const token = 'チャネルアクセストークン'; //チャネルアクセストークン var spreadsheet = SpreadsheetApp.openById("スプシアドレス"); var sheet_userlist = spreadsheet.getSheetByName('userlist'); let userId = sheet_userlist.getRange("B2").getValues(); let message = sheet_userlist.getRange("C2").getValues(); console.log(userId); //確認用 console.log(message); //確認用 const postData = { "to": userId, "messages": [{ "type": "text", "text": message }] } const params = { method: 'post', contentType: 'application/json', headers: { Authorization: 'Bearer ' + token }, payload: JSON.stringify(postData) }; UrlFetchApp.fetch(url, params); }

以下のようにユーザーIDとメッセージを直接書き込めば問題なく送信できますが、

const postData = {
"to": "ユーザーID",
"messages": [{
"type": "text",
"text": "メッセージ"
}]
}

上記のコードのように、スプレッドのセルからもってきた変数でユーザーIDとメッセージ内容を指定すると、こちらのエラーが返ってきます。

Exception: Request failed for https://api.line.me returned code 400. Truncated server response: {"message":"The property, 'to', in the request body is invalid (line: 1, column: 7)"} (use muteHttpExceptions option to examine full response)

解決策をご教授頂けますと大変幸いでございます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現状だと getValues() で取得した配列を渡しているため、エラーが発生しています。
getValues() ではなく getValue() を使用し、単一値を渡すようにする必要があります。

js

1 let userId = sheet_userlist.getRange("B2").getValue(); 2 let message = sheet_userlist.getRange("C2").getValue();

投稿2022/05/01 19:38

編集2022/05/01 20:39
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

katt

2022/05/02 02:49

ご指摘の通りやってみたところ解決しました! 初歩的な質問で申し訳ございませんでした。 この度は大変ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問