![](/img/trans.png)
[英]Google sheet + App Script : Rename every sheet if it meet criteria
[英]How to export Google Meet and Google Meet live stream urls to Google sheet?
因此,我正在開發一個 App Script 模板,該模板允許您查找 Google 日歷並將其導出為 Google 電子表格,以便進一步報告或處理(托管在https://www.cloudbakers.com/blog/export -google-calendar-entries-to-a-google-spreadsheet )。 我的副本中運行得很好,但我想將 Google Meet 視頻會議和 Google Meet Livestream 的 URL 添加到每個日歷事件的 output 列中。 在我的公司,這些通常被列為 ConferenceData.entryPoints[].uri 中的第一個和最后一個值。 我試過了:
var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent(), events[i].conferenceData.entryPoints.uri]];
並獲得“TypeError:無法從未定義中讀取屬性“entryPoints””。 最后只使用 events[i].conferenceData 重新運行,實際上只是在工作表的新列中打印“未定義”。
關於我在這里缺少什么的任何想法? 我是一個 Apps Scripts 菜鳥,所以我自己嘗試解決這個問題並沒有取得太大的成功。
當您使用CalendarApp.getEvents(startTime, endTime, options)獲取給定時間范圍內的所有事件時,它將返回一個CalendarEvent數組 object。 CalendarEvent object 沒有conferenceData
方法。 您可以在提供的參考鏈接上查看可用的 CalendarEvent 方法列表。
沒有可用於獲取 Google Meet 和 Google Live Stream URL 的CalendarEvent方法。 您需要使用高級日歷服務來獲取此 URL。
// Create a header record on the current spreadsheet in cells A1:N1 - Match the number of entries in the "header=" to the last parameter
// of the getRange entry below
var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event", "Meet Link", "Live Stream"]]
var range = sheet.getRange(1,1,1,16);
range.setValues(header);
// Loop through all calendar events found and write them out starting on calulated ROW 2 (i+2)
for (var i=0;i<events.length;i++) {
var row=i+2;
var myformula_placeholder = '';
// Matching the "header=" entry above, this is the detailed row entry "details=", and must match the number of entries of the GetRange entry below
// NOTE: I've had problems with the getVisibility for some older events not having a value, so I've had do add in some NULL text to make sure it does not error
var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent(), "None", "None"]];
//Add Meet link
var eventId = events[i].getId().replace("@google.com","");
var currentEvent = Calendar.Events.get(mycal,eventId);
if(currentEvent.conferenceData != null){
//Update Meet link
details[0][14] = currentEvent.conferenceData.entryPoints[0].uri;
//Update Live Stream
if(currentEvent.conferenceData.entryPoints.length > 1){
details[0][15] = currentEvent.conferenceData.entryPoints[currentEvent.conferenceData.entryPoints.length - 1].uri;
}
}
var range=sheet.getRange(row,1,1,16);
range.setValues(details);
// Writing formulas from scripts requires that you write the formulas separate from non-formulas
// Write the formula out for this specific row in column 7 to match the position of the field myformula_placeholder from above: foumula over columns F-E for time calc
var cell=sheet.getRange(row,7);
cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))');
cell.setNumberFormat('.00');
}
header
變量中添加附加表 header(“Meet Link”和“Live Stream”)details
變量中為 meet 鏈接和 live stream 鏈接添加額外的默認值請注意,Calendar v3 API 和 Calendar 高級服務使用的 iCalUID 和事件 ID 不相同,不能互換使用
conferenceData
數據的事件資源(如果可用)conferenceData
是否存在,根據entryPoints[]
參數更新details
變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.