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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

1329閲覧

Googleカレンダーの内容をLINEで通知したいが、全てのイベントが通知されない

manami19960501

総合スコア3

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/12/14 02:47

GASにて、Googleカレンダーから日時とイベントをLINEへ毎日通知するものを作りました。
動きはするものの、
カレンダーでは3つ以上イベントがあるにも関わらず1つのみ送られている状況です。
何卒アドバイスいただけたらと思います。

const LINE_NOTIFY_TOKEN = "LINEトークン***";
const LINE_NOTIFY_API = "https://notify-api.line.me/api/notify";
const CALENDER_NAME = "カレンダーID"; //取得するカレンダー名

function calendarToLine() {
var calendars = CalendarApp.getAllCalendars();
// var text = "\n" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n" ;
var text = "\n" + Utilities.formatDate(new Date(), 'JST', 'M月d日') + "\n" ;

for(i in calendars) {
var calendar = calendars[i];
var events = calendar.getEventsForDay(new Date());

/*
//カレンダー名を取得する
if( events.length > 0 ) {
text += "■ " + calendar.getName() + "\n";
}
*/

if( calendar.getName() == CALENDER_NAME ) {

// text += "■ " + calendar.getName() + "\n";

//カレンダーの内容を取得する for(j in events) { var event = events[j]; var title = event.getTitle(); var start = toTime(event.getStartTime()); var end = toTime(event.getEndTime()); text += start + ' - ' + end + " " + title + '\n'; } if( events.length > 0 ) { text += "\n"; } }

}

sendToLine(text);//LINEにデータを送信する
}

//LINEにデータを送信する
//text:送信するデータ
function sendToLine(text){
var token = LINE_NOTIFY_TOKEN;
var options =
{
"method" : "post",
"payload" : "message=" + text,
"headers" : {"Authorization" : "Bearer "+ token}

};
UrlFetchApp.fetch(LINE_NOTIFY_API, options);
}

//'HH:mm'に変換する
function toTime(str){
return Utilities.formatDate(str, 'JST', 'HH:mm');
}

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

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

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

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

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

guest

回答1

0

ベストアンサー

カレンダーに存在する3つ以上のイベントの日付は同一日でしょうか。

var events = calendar.getEventsForDay(new Date());

このコードだと、実行した時点の日付のイベントしか取得しないと思われます。
期間を範囲で指定する場合には

var events = calendar.getEvents(startTime, endTime)

こちらを使うとよいと思います。

投稿2021/12/14 03:47

com.woody

総合スコア43

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

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

manami19960501

2021/12/14 04:21

ご回答ありがとうございます!出来ました! LINEに送りたいイベントは全て実行した日と同一です! アドバイスいただいた通りに下記のように書き加えたところ、無事全ての予定が通知されました! ありがとうございます! var calendar = calendars[i]; var startTime = new Date(); var endTime = new Date(Date.parse(startTime) + (1 * 60 * 60 * 24 * 1000)); var events = calendar.getEvents(startTime, endTime);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問