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

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

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

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

Q&A

解決済

1回答

110閲覧

LINE Messaging APIを使ってGmailの内容をLINEグループに送りたい

miu00

総合スコア1

LINE Messaging API

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

0グッド

0クリップ

投稿2025/01/06 02:15

実現したいこと

LINE Messaging APIを使ってLINEグループにGmailの内容を送りたい。

前提

GASを使っています。
LINE Notify の終了に伴いそこで動作をしていたコードとAI作成したコードを切り貼りして作成をしております。

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

Exception: Request failed for https://api.line.me returned code 400. Truncated server response: {"message":"The request body has 2 error(s)","details":[{"message":"May not be empty","property":"messages"},{"message":"May not be empty","propert... (use muteHttpExceptions option to examine full response)

該当のソースコード

JAVA

//条件
const query = 'from:mail_address';

// LINE Messaging APIのメッセージ上限
const MAX_MESSAGE_LENGTH = 980;

const Access_Token = "Access_Token";

//Gmailから取得
function getMail() {
// スレッド検索 (最大10件)
const threads = GmailApp.search(query, 0, 10);
const messages = GmailApp.getMessagesForThreads(threads);

for (const messageThread of messages) {
for (const message of messageThread) {
if (!message.isStarred()) {
const messageDate = message.getDate();
const formattedDate = Utilities.formatDate(messageDate, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss');
const subject = message.getSubject();
const body = message.getPlainBody();

let messageContent = `${formattedDate}\n${subject}\n${body}`; // メッセージを分割して送信 (LINE Messaging APIの上限文字数に合わせる) for (let i = 0; i < messageContent.length; i += MAX_MESSAGE_LENGTH) { const chunk = messageContent.substring(i, i + MAX_MESSAGE_LENGTH); sendLineMessage(chunk); } // 処理済みメッセージはスターを付ける message.star(); } }

}
}

//LINEに送信
function sendLineMessage(message) {
const url = "https://api.line.me/v2/bot/message/push";
const payload = {
message: {
type: "text",
text: message,
},
};

//LINE グループのreplayToken
const replayToken = "replayToken";

const options = {
"method": "post",
"headers": {
"Authorization": "Bearer " + Access_Token,
"Content-Type": "application/json; charset = UTF-8",
},
"payload": JSON.stringify(payload),
};

UrlFetchApp.fetch(url, options);
}

試したこと

AI生成の物と、有志で作成したものを切り貼りしており何を試せばいいかわからない状態です、、
ぐちゃぐちゃで見づらいかもしれませんが、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

プッシュメッセージを送る
こちらにあるようにリクエストボディには「to」と「messages」が必須となっています。

JSON

1{ 2 "to": "グループID", 3 "messages":[ 4 { 5 "type":"text", 6 "text":"送信テキスト" 7 } 8 ] 9}

といった形になるのではないでしょうか

投稿2025/01/06 02:53

YAmaGNZ

総合スコア10516

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

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

miu00

2025/01/06 04:52

YAmaGNZさんありがとうございます! その通り直したところ、動作しました! function sendLineMessage(message) { const url = "https://api.line.me/v2/bot/message/push"; const replayToken = "グループID"; const payload = { "to": replayToken, "messages":[ { "type": "text", "text": message, }], }; const options = { "method": "post", "headers": { "Authorization": "Bearer " + Access_Token, "Content-Type": "application/json; charset = UTF-8", }, "payload": JSON.stringify(payload), }; UrlFetchApp.fetch(url, options); } ありがとうございます! 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問