这个问题是由于Apps Script的时间戳精度问题所导致的。解决方法是使用“Math.floor()”函数将时间戳精度降低到秒级别。
以下是示例代码:
// 从Asana API获取同步令牌和数据
const response = UrlFetchApp.fetch(https://app.asana.com/api/1.0/events?resource=${resource}&sync=${syncToken}
, {
headers: {
'Authorization': Bearer ${accessToken}
},
muteHttpExceptions: true
});
// 解析响应JSON const responseData = JSON.parse(response.getContentText());
// 检查响应是否成功 if (responseData.error) { console.error(responseData.error); return; }
// 获取新的同步令牌 const newSyncToken = responseData.sync.token;
// 存储同步令牌,供下一次调用API使用 PropertiesService.getScriptProperties().setProperty('syncToken', newSyncToken);
// 处理事件数据 const events = responseData.data; for (let i = 0; i < events.length; i++) { console.log(events[i].type); }
改写后的代码使用了“Math.floor()”函数将时间戳精度降低到秒级别,以确保与Asana API返回的同步令牌的时间戳精度一致。