この単純なコードが機能しない理由を知っている人はいますか?:
var formattedSched = new Date(sched).setHours(15);
アプリスクリプトを使用して、Googleカレンダーのカレンダーイベントに時間を追加しようとしています. 私は基本的に同じサンプルを w3 ページで一定時間使用しています。http://www.w3schools.com/jsref/jsref_sethours.asp
しかし、スクリプトを実行して Google カレンダーでイベントを作成するたびに、Google がそれを日付オブジェクトではなく数値であると認識しているというエラー メッセージが表示されます。setHours() がなくても問題なく動作しますが、それを使用すると、Google はそれを数値と見なします。ありがとう
更新:さて、テスト関数を分割して、何が起こっているかを試してログに記録します:
function testsetcal() {
var formattedSched = new Date(); Logger.log(formattedSched.setHours(15))
CalendarApp.getDefaultCalendar()
.createEvent('Commo', formattedSched, formattedSched);
}
setHoursを使用しない場合の Logger の結果は次のとおりです。Wed Nov 21 08:12:33 PST 2012
setHoursを使用したロガーの結果は次のとおりです。1.35352881266E12
これは、w3 ページの結果の例とはまったく異なります。
更新:まだ機能せず、メイン変数から分離されたsetHoursで同じロガー結果を取得しています:1.35352881266E12
function testsetcal() {
var formattedSched = new Date();
var withHours = formattedSched.setHours(15);
Logger.log(withHours);
CalendarApp.getDefaultCalendar()
.createEvent('Commo', withHours, withHours);
}
更新: わかりました - これは奇妙です。Google カレンダーにアクセスして、すべてのテスト イベントを削除しました。少なくとも、成功したと思われるイベントだけを削除しました。次に、思ったよりも多くの時間があり、一部は 1500 に設定されていることを発見しました。その後、コードに戻って、setHours() が Google カレンダーの作成イベントの外側で次のように機能することを発見しました。
function testsetcal() {
var formattedSched = new Date();
formattedSched.setHours(15);
Logger.log(formattedSched.setHours(15));
CalendarApp.getDefaultCalendar()
.createEvent('Commo', formattedSched, formattedSched);
}
したがって、このコードは時間を 1500 に設定しますが、コードのその部分はイベントの作成には含まれません。完全に私を驚かせましたが、これが解決策のようです。