0

この単純なコードが機能しない理由を知っている人はいますか?:

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 に設定しますが、コードのその部分はイベントの作成には含まれません。完全に私を驚かせましたが、これが解決策のようです。

4

3 に答える 3

0

先に進んでこれを閉じるべきだと思います。返信ありがとうございます。時間を指定してGCalにイベントを取得するために機能するコード:

function testsetcal() {  
  var formattedSched = new Date(); 

  formattedSched.setHours(15);

  Logger.log(formattedSched.setHours(15));

  CalendarApp.getDefaultCalendar()
  .createEvent('Commo', formattedSched, formattedSched);
}

は の.setHours外にある必要があります.createEvent

于 2012-11-21T16:52:19.920 に答える
0

そうではありません。現在、var に setHours 応答を返しています。試してみてください。

var formattedSched = new Date(sched);
formattedSched.setHours(15);
于 2012-11-21T15:48:30.067 に答える
0

参照した例のように分離する必要があります。

var formattedSched = new Date(sched);
formattedSched.setHours(15);

setHours()まだ作成されていない日付オブジェクトを実装しようとしています。

于 2012-11-21T15:49:53.143 に答える