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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Google スプレッドシート

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

解決済

予定やタスクをLINEに自動通知

yuka2020
yuka2020

総合スコア2

Google スプレッドシート

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

1回答

0グッド

0クリップ

259閲覧

投稿2022/11/18 05:14

前提

https://docs.google.com/spreadsheets/d/1BrC7K-a48CEj8cOUDhMDry-t2xuK2JNddF5ptE6Utws/edit?usp=sharing
のようなスプレッドシートがあります。

1列目の分類が予定だった場合は
日付のセルに記入されてある日に日付・時間・重要度・件名・詳細・備考・担当者が
LINEに通知されるようにしたいと思っています。

1列目がタスクだった場合は
登録された次の朝7時に日付・時間・重要度・件名・詳細・備考・担当者を
通知されるようにしたいと考えています。
また、2列目に「完」が入力されていない場合は
締め切り日の7~5日前、2日前~締め切り日前日、締め切り日以降
にリマインドとしてLINEに通知できるようにしたいと考えています。

タイムスタンプはできたのですが、
予定通知を当日の朝7時くらいに送るようにはできたのですが、
スプレッドシート中身ではなく「object」と送られてきてしまいました。

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

実現したいこと

(1)1列目の分類が予定だった場合
①日付のセルに記入されてある日に日付・時間・重要度・件名・詳細・備考・担当者をLINEに通知

(2)1列目がタスクだった場合
①登録された次の朝7時に日付・時間・重要度・件名・詳細・備考・担当者をLINE通知
②2列目に「完」が入力されていない場合は締め切り日の7~5日前、2日前~締め切り日前日、締め切り日以降は毎日リマインドとしてLINEに通知

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

LINEの通知内容が [object Object] という状態です。

該当のソースコード

function onEdit(e) { const ws = "予定" let row = e.range.getRow() let col = e.range.getColumn() let currnetDate = new Date() //現在の日時 if (row >= 2 && col > 1 && e.source.getActiveSheet().getName() === ws) { //シートがwsでかつ1列目で2行目以降か? e.source.getActiveSheet().getRange(row, 11).setValue(currnetDate) if (e.source.getActiveSheet().getRange(row, 10).getValue() === "") { //Date Enterdが空のとき e.source.getActiveSheet().getRange(row, 10).setValue(currnetDate) //Date Enterdに日時を入れる } } } //LINEへの通知 const sendToLINE = (message) => { const token = "LINEのトークンの番号"; const options = { "method": "post", "payload": `message=${message}`, "headers": { "Authorization": `Bearer ${token}` } }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); }; //スプレッドシートから今日の予定を通知 const eventSend = () => { //スプレッドシートからデータの取得 const ss = SpreadsheetApp.openById("1BrC7K-a48CEj8cOUDhMDry-t2xuK2JNddF5ptE6Utws"); const sheet = ss.getSheetByName("予定"); const calendar = sheet.getRange("A6:K999").getValues(); //明日の日付 const today = new Date(); const tommorow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1, 0, 0, 0); //予定を取得 const todayEvent = calendar.find(arr => new Date(arr[0]).getTime()); //予定がないとき if(todayEvent[3] === "") { return; } //LINEへの送信メッセージの作成 const message = ` お疲れ様です。本日の予定は下記のとおりです。 日付:${todayEvent[3]} 時間:${todayEvent[4]} 重要度:${todayEvent[5]} 件名:${todayEvent[6]}  詳細:${todayEvent[7]} 備考:${todayEvent[8]}   担当者:${todayEvent[9]} 今日も一日頑張りましょう☺`; sendToLINE(message); };

試したこと

https://somachob.com/gas-linenotify-event/(スケジュール通知アプリを作る【LINENotify】)
https://www.mdn.co.jp/di/contents/4047/54812/(Googleスプレッドシートで課題管理表を作成し、メール通知などの処理を自動化しよう)
https://www.akaeho.net/google-sheets-todo-remind/(締切毎のリマインドの送り方)
などを参考にし、上記まではできたのですが応用するとエラーや現状のような状況です。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

検証していないのでこれで直るかわからないですけど、payloadのところはJSONコードをいれないといけないのではないのでしょうか?

javascript

1//LINEへの通知 2const sendToLINE = (message) => { 3 const token = "LINEのトークンの番号"; 4 5 ////////// 追加 6 const payload = { 7 to: '*****', //ユーザーID 8 messages: [{ 9 type: 'text', 10 text: message 11 }] 12 }; 13 14 const options = { 15 "method": "post", 16 "contentType": 'application/json', ////////// 追加 17 "payload": JSON.stringify(payload), ////////// 修正 18 "headers": { 19 "Authorization": `Bearer ${token}` 20 } 21 }; 22 UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); 23};

参考

投稿2022/11/20 04:36

Cocode

総合スコア2125

spoofy_dragon👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yuka2020

2022/11/21 06:25

回答ありがとうございます。 コピーペーストしたのですが、エラーコードになりました。 私の使っているコードと相性が悪かったのでしょうか…。 よくわからず、申し訳ありません。
Cocode

2022/11/21 07:09

エラー文章をコピペお願いしますm(_ _)m

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google スプレッドシート

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