2016-09-28 81 views
1

我編寫了以下函數來嘗試獲取創建gCal事件的用戶。getCreators()類型錯誤

爲了測試這個,我在日曆上創建了一個事件並試圖運行該腳本。腳本執行時會出現錯誤:「TypeError:無法在對象CalendarEvent中找到函數getCreators(第68行,」代碼「文件)。

任何想法爲什麼會發生這種情況?我相當肯定getCreators()是在對象CalendarEvent函數(參考文獻:https://developers.google.com/apps-script/reference/calendar/calendar-event#getCreators()

function getuser(instr) { 
    var today = new Date(); 
    var scriptProperties=PropertiesService.getScriptProperties(); 
    var instrcal= scriptProperties.getProperty(instr); 
    var event=CalendarApp.getCalendarById(instrcal).getEventsForDay(today); 
    if (event<1) { 
    var user= 'None' 
    } 
    else if (event>1) { 
    var user= 'Multiple Users' 
    } 
    else { 
    var user= event.getCreators() 
    } 
    return user 
} 

回答

0

getEventsForDayreturns an array of CalendarEvent objects,所有事件的那一天,哪怕只是一個。
你需要通過事件找到你想要的,然後撥打getCreators()

您可以通過使用

var event=CalendarApp.getCalendarById(instrcal).getEventsForDay(today)[0]; 

這裏通話將工作驗證這一點。

+0

沒有意識到它仍然會返回一個數組,如果有一個值。這解決了它!謝謝! – DLee

+0

你必須先用'event.length'來檢查第一個元素'event [0]' –

+0

在一個無人監督的環境中是的,在這裏我們知道OP自己創建了至少一個事件,所以我省略了爲了簡潔起見 –

0

方法getEventsForDay(date)得到array在給定日期發生的所有事件。

檢查您是否在做:event < 1而不是event.length < 1

代碼:

function getuser(instr) { 
    var today = new Date(), 
     scriptProperties = PropertiesService.getScriptProperties(), 
     instrcal = scriptProperties.getProperty(instr), 
     events = CalendarApp.getCalendarById(instrcal).getEventsForDay(today), 
     user = 'None'; 

    if (events.length === 1) { 
     user = events[0].getCreators(); 
    } else if (events.length > 1) { 
     user = 'Multiple Users'; 
    } 

    return user; 
}