2017-05-05 24 views
0

Google Apps Scriptを使用して、Google Calendarで終日のイベントをプルし、一部のデータをGoogleスプレッドシートにエクスポートしようとしています。Google Apps Scriptでイベントの最終日を取得する

注:カレンダーはONLY私はプルしようとしているデータは終日のイベント

があります - タイトル - 日 開始 - 終了日

を私は自分のアプリケーションで次のように使用していますスクリプト:

var mycal = "[Calendar ID/Address]"; 
var cal = CalendarApp.getCalendarById(mycal); 
var events = cal.getEvents(new Date("May 1, 2017 00:00:00 CST"), new Date("August 31, 2017 23:59:59 CST")); 
var sheet = SpreadsheetApp.getActiveSheet(); 
var header = [["Calendar Address", "Event Title", "Event Start", "Event End"]] 
var range = sheet.getRange(1,1,1,4); 
range.setValues(header); 

for (var i=0;i<events.length;i++) { 
var row=i+2; 
var details=[[mycal,events[i].getTitle(), events[i].getStartTime(), events[i].getEndTime()]]; 
var range=sheet.getRange(row,1,1,4); 
range.setValues(details); 

残念ながら、「getEndTime」はイベントの最後の日ではなく、翌日です。私はこれが設計によるものだと確信していますが、実際にイベントの最終日にどのように私が引き込むのかに関するアドバイスはありますか?

注:これは完全に初心者ですが、回答が簡単な場合はお詫び申し上げます。

+0

上でより多くのドキュメントを見つけることができます。あなたはおそらく1日減らしたり、[getAllDayEndDate()](https://developers.google.com/apps-script/reference/calendar/calendar-event#getalldayenddate)を使うことができます。 –

+0

@jackBrown - getAllDayEndDate()が動作していないようです。しかし、Googleスクリプト内に与えられた日付から1を引く正しい方法は何ですか? もう一度、この質問が非常に初心者のように思われる場合は、私は非常にこれに新しいです。 – GreatMUSA

答えて

0

イベントの最終日はカレンダーから取得できません。日付から1日を引いて、カレンダーイベントの最終日を得ることができます。あなたは、現在のDT obejctの個々のコンポーネントから新しい日付を構築するためにDateコンストラクタを使用し、方法1あなたの日からその日に

function sub1day(date){ 

if (date == null) 
    var dt = new Date() 
else 
    dt = date 

Logger.log("Current date: "+ dt) 
//Method 1 
var prevDay = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()-1,dt.getHours(),dt.getMinutes(),dt.getSeconds()) 
Logger.log(" Method 1, previous day: "+ prevDay) 

//Method 2 
var time = dt.getTime() // in ms 
var oneDay = 24*60*60*1000 //1 day in ms 
prevDay = new Date(time - oneDay) 
Logger.log("Method 2, previous day: "+ prevDay) 

return prevDay 

} 

を減算するには、以下のことができます。前日は、getDate()によって返された日付から日付オブジェクトの関数を減算することによって決定されます。

方法2、現在の日付を時間として取得し、1日をミリ秒単位で減算します。そして、差し引いた時刻から新しい日付を作成します。

あなたはそのAN終日イベント場合、それは次の日にあなたを与えるだろう、したがって、それは仕様ですDate object here

+0

ありがとう!これは素晴らしい仕事でした! – GreatMUSA

+0

解決策が解決した場合は、回答の横にあるチェックマークをクリックして回答を受け入れてください。ありがとう –

関連する問題