2017-10-03 4 views
1

私は次のコードを持っています。指定された2つの日付間のすべてのGoogleカレンダーイベントを取得するAppsスクリプトです。 JavaScriptで今日の日付を参照するには?

// from https://blog.ouseful.info/2010/03/05/grabbing-google-calendar-event-details-into-a-spreadsheet/ 

function caltest3(){ 
    //http://www.google.com/google-d-s/scripts/class_calendar.html#getEvents 
    // The code below will retrieve events between 2 dates for the user's default calendar and 
    // display the events the current spreadsheet 
    var cal = CalendarApp.getDefaultCalendar(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 


    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth()+1; //January is 0! 
    var yyyy = today.getFullYear(); 

    var events = cal.getEvents(new Date("October 3, 2017 00:00:00"), new Date("October 3, 2017 23:00:00")); 
    for (var i=0;i<events.length;i++) { 
    //http://www.google.com/google-d-s/scripts/class_calendarevent.html 
    var details=[[events[i].getStartTime(), events[i].getEndTime(), events[i].getTitle(), events[i].getDescription()]]; 
    var row=i+1; 
    var range=sheet.getRange(row,1,1,4); 
    range.setValues(details); 
    } 
} 

は現在、これらの二つの日付は eventsが宣言されている行に、ハードコーディングされています。私は日付範囲を同じ日付として設定し、最初の23時間に焦点を当てています。

しかし、スクリプトが毎日実行されるため、2つの日付をハードコードすることはできません。これらはそれぞれ現在の日付を反映して動的でなければなりません。

ハードコードされた日付の代わりに、ハードコードされた時間を保持しながら、現在の日付を「2017年10月3日」の形式で使用するにはどうすればよいですか?

はい、私は調査してDate objectについて読んでいますが、正しい表現を調理することはできません。余分な情報があれば、私はそれをもっと学ぶのに役立ちます。

答えて

0

EDIT:削除された+1は月です。元のコードのコピー&から元々それを残しました。

var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth(); //January is 0! 
    var yyyy = today.getFullYear(); 

    var events = cal.getEvents(new Date(yyyy, mm, dd, 0, 0, 0), new Date(yyyy, mm, dd, 23, 0, 0)); 
+0

これはうまくいきましたが、 '+ 1 'を取り除いたときに限ります。 –

+0

+ 1を追加しないと、月が間違っています。月は0です。 –

+0

いいえ、@ RobertAndrewsは、月がゼロであり、getMonth()の結果とDateコンストラクタの予想されるパラメータとしてインデックス付けされているため正確です。 –

4

は引数が提供されていない場合は、Date object

から引数なしのコンストラクタを見れば、コンストラクタはシステム 設定に従って、現在の日付と時刻のためのJavaScript Dateオブジェクトを作成します。

新しい日付オブジェクトを作成すると、今日のために作成されることがわかります。このドキュメントにはゲッター/セッターもあります。したがって、新しいDateオブジェクトを作成し、時間/分/秒を希望する時間に設定できます。

let startDate = new Date(); 
startDate.setHours(0); 
startDate.setMinutes(0); 
startDate.setSeconds(0); 

let endDate = new Date(); 
endDate.setHours(23); 
endDate.setMinutes(0); 
endDate.setSeconds(0); 
+0

説明はありがたいですが、丘の上にはできませんでした。 'var events = cal.getEvents(startDate、endDate);'を実行するという考えはありましたか?私はそれを働かせることができませんでした。 –

関連する問題