簡體   English   中英

如何將 Google Meet 和 Google Meet live stream 網址導出到 Google 表格?

[英]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');

  }

它能做什么?

  1. header變量中添加附加表 header(“Meet Link”和“Live Stream”)
  2. 在您的details變量中為 meet 鏈接和 live stream 鏈接添加額外的默認值
  3. 從事件的 iCalUID 獲取日歷事件 ID。 CalendarEvent.getId()返回事件的 iCalUID。 我們只需要刪除 iCalUID 中的“@google.com”即可獲取事件 ID。

請注意,Calendar v3 API 和 Calendar 高級服務使用的 iCalUID 和事件 ID 不相同,不能互換使用

  1. 使用Calendar.Events.get(calendarId: string, eventId: string)獲取包含conferenceData數據的事件資源(如果可用)
  2. 檢查conferenceData是否存在,根據entryPoints[]參數更新details變量。
  3. 將事件詳細信息寫入活動工作表

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM