首页 > 解决方案 > 对 calendar.events.list 的 API 调用失败并出现错误:同步令牌不再有效,需要完全同步。我应该怎么办?

问题描述

我收到有关同步令牌无效且需要完全同步的错误。我应该在代码中添加什么来修复它?

我尝试阅读 Google Calendar API,但我不知道在哪里更改代码。

这是同步令牌的一些代码。

function updateSyncToken(calendarId, syncToken) {
  var spreadsheetId = 'sheetID';
  if(calendarId == 'Cal1') {
    var range = 'Settings!B2';
  } else if(calendarId == 'Cal2') {
    var range = 'Settings!B3';
  } else if(calendarId == 'Cal3') {
    var range = 'Settings!B4';
  } else if(calendarId == 'Cal4') {
    var range = 'Settings!B5';
  } else if(calendarId == 'Cal5') {
    var range = 'Settings!B6';
  } else if(calendarId == 'Cal6') {
    var range = 'Settings!B7';
  } else if(calendarId == 'Cal7') {
    var range = 'Settings!B8';
  } else if(calendarId == 'Cal8') {
    var range = 'Settings!B9';
  } else if(calendarId == 'Cal9') {
    var range = 'Settings!B10';
  } else if(calendarId == 'Cal10') {
    var range = 'Settings!B11';
  } else {
    return
  }
  var values = [[syncToken]];

  var valueRange = Sheets.newRowData();
  valueRange.values = values;

  var appendRequest = Sheets.newAppendCellsRequest();
  appendRequest.sheetId = spreadsheetId;
  appendRequest.rows = [valueRange];

  var result = Sheets.Spreadsheets.Values.update(valueRange, spreadsheetId, range, {
    valueInputOption: 'RAW'
  });
}

function fetchEvents(calendarId, syncToken, sheetId) {
  var options = {
    syncToken: syncToken 
  }; 
  var response = Calendar.Events.list(calendarId, options);
  var events = response.items;
  if (events.length > 0) {
    updateSyncToken(calendarId, response.nextSyncToken)
    logEvents(events, sheetId);
  }
}

标签: google-apps-scriptgoogle-calendar-api

解决方案


请参考文档

建议的操作:对于 SyncToken 或 updatedMin 参数,擦除存储并重新同步。有关更多详细信息,请参阅高效同步资源。对于已删除的事件,无需进一步操作。

您还可以找到更多有关此响应的文献。


推荐阅读