簡體   English   中英

Google Apps腳本尚未完成

[英]Google Apps Script isn't finishing

我目前正在嘗試編寫一個腳本,以遍歷我的Google電子表格,並使用電子表格中的信息更新Google日歷。

我的代碼基於此處找到的答案。

這是代碼:

/**
 * Export events from spreadsheet to calendar
 */
function exportEvents() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var headerRows = 1;  // Number of rows of header info (to skip)
  var range = sheet.getDataRange();
  var data = range.getValues();
  var calId = "<ID>";
  var cal = CalendarApp.getCalendarById(calId);
  for (i in data) {
    if (i < headerRows) continue; // Skip header row(s)
    var row = data[i];
    var date = new Date(row[9]);
    var title = row[19]+" - "+row[3]+" - "+row[1]+" - "+row[2];
    var id = row[28];
    // Check if event already exists, delete it if it does
    try {
      var event = cal.getEventSeriesById(id);
      event.deleteEventSeries();
      row[28] = '';  // Remove event ID
    }
    catch (e) {
      // do nothing - we just want to avoid the exception when event doesn't exist
    }
    var newEvent = cal.createAllDayEvent(title, date).getId();
    row[28] = newEvent;  // Update the data array with event ID
    debugger;
  }
  // Record all event IDs to spreadsheet
  range.setValues(data);
};

它在大多數情況下都起作用。 它遍歷電子表格,並為具有日期設置的行添加具有正確標題的日歷條目。

但是,這樣做需要很長的時間,我可以觀看日歷並觀看腳本,慢慢地逐個添加事件。 我認為那幾乎是瞬間。 最重要的是,它從未真正完成。 我不確定它是否無法完成或是否在可以完成之前超時,但是它永遠不會完成,它永遠不會到達將事件ID寫入電子表格的部分,這是一個問題,因為沒有eventID ,該函數將繼續創建重復的條目。

可能相關的是,並非每一行都設置了日期,因此在循環運行的某些時間中,由於日期為Null,所以不會創建任何事件。

我是否缺少某些腳本運行效率很低的東西? 如何加快速度並達到終點?

電子表格有多大? 如果工作表中的行太多,則腳本可能正在超時。

我建議您創建一個基於時間的觸發器,該觸發器可以批量處理“ n”行,一旦處理完工作表中的所有行,觸發器應將其自身刪除。

暫無
暫無

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

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