2016-10-12 4 views
1

datepickerの出力に基づいてイベントをプルアップするためにCalendar APIを使用しようとしています。私のAppScriptに直面している問題は、getEventsForDay()関数の入力として機能するdatepickerから得られる値を適切にフォーマットしていることです。このフォーマットが全く動作していないので、予想される -datePicker戻り値のgetEventsForDay()書式設定の問題

function testing(){ 
var z = CalendarApp.getCalendarsByName("X")[0]; 
var date = new Date('2016-10-12'); 
var dateformatted =Utilities.formatDate(date), "GMT", "yyyy-MM-dd hh:mm:ss a"); 
var a = z.getEventsForDay(dateformatted, {search: 'OOO'}); 

このシナリオへの出力は、空のオブジェクトです。 (私は1000の記事を読んでこれがうまくいくはずです)。

文脈についても、私は入力が新しいDate()であるため、今日の日付を持つ1つの実例を持っています。ここに行く:

var datetoday = new Date(); 
var b = z.getEventsForDay(datetoday, {search: 'OOO'}); 

私はここに何が欠けているのアイデア?

ありがとうございます。

答えて

0

new Date()は、ローカルのタイムゾーンではなく、UTCでDateオブジェクトを返します。したがって、他の日にイベントがない場合は、間違った日と空のオブジェクトを照会している可能性があります。

は、ローカルタイムゾーンで日付を返す必要があります

date.setTime(date.getTime() + date.getTimezoneOffset()*60*1000) 

このように現在のタイムゾーンに日付をひそかすることができますし、正しい日のイベントを取得します。

は、それが

+0

は魔法のように解決します!ありがとう! – Rafa

+0

実際には、このソリューションには問題があります。今日の日付にのみ機能します。将来の日付を設定すると、今日の日付が返されます。少なくとも私が今までここでやったテストから。 – Rafa

+0

私はちょうど私が新しい日付( '1999年7月1日')としてエントリを追加する場合、それが動作することを実現します。しかし、全体的な問題は、 "YYYY-MM-DD"という結果を出力する日付選択ツールからこの形式に変換する方法です – Rafa

0

は、いくつかの変更を加え、今、これはアプリケーションのスクリプトで動作ホープ:

var t = "2016-10-01"; 
var q = t.replace(/-/g,"/"); 
var a = new Date(q); 
a.setTime(a.getTime() + a.getTimezoneOffset()*60*1000) 
var w = z.getEventsForDay(a, {search: 'OOO'}); 
Logger.log(a); 
Logger.log(w);