如何设置 Google 任务截止日期

CTO*_*ton 4 date google-apps-script google-tasks google-tasks-api

如何在应用程序脚本中使用 Google 任务服务设置任务的截止日期?

任务服务

尝试将此值设置为给定日期,但这似乎只更新本地值而不是服务器值,如 tehhowch 所建议的那样

task.due = new Date();
Run Code Online (Sandbox Code Playgroud)

你如何更新服务器?这是我尝试过的

var x = {
    due: new Date()
};
Tasks.Tasks.update(x, "MDE2NzI3NTAzNjc5NTQ1ODY5MTY6MDow", task);
Run Code Online (Sandbox Code Playgroud)

但它会抛出错误

Invalid value for: Invalid format: "Tue Apr 10 20:45:26 GMT-04:00 2018"
Run Code Online (Sandbox Code Playgroud)

已完成项目

我使用此代码创建了此项目,以使 Google Tasks 保持最新状态:

保持 Google 任务更新

https://github.com/CTOverton/Keep-Google-Tasks-Updated

teh*_*wch 5

根据任务资源的 Google Tasks API 文档,该due参数必须是RFC 3339 时间戳。所以"Tue Apr 10 20:45:26 GMT-04:00 2018"应该是"2018-04-11T0:45:26.000Z". 请参阅相关问题:生成类似于 Google Tasks API 的 RFC 3339 时间戳?

这与任务的其他属性使用的格式相同datetime,因此如果要记录任务:

console.log(Tasks.Tasks.get(listId, taskId));
Run Code Online (Sandbox Code Playgroud)

然后due,completed和updated属性(如果存在)将指示所需的格式。

从 Google Apps 脚本中的本机 JavascriptDate中,最简单的方法是:

function getExtension(listId, taskId) {
  var now = new Date();
  var deadline = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 7));
  var newTask = {
    due: Utilities.formatDate(deadline, "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'")
  };
  // Since we supply only a partial resource, call .patch() rather than .update()
  Tasks.Tasks.patch(newTask, listId, taskId);
}
Run Code Online (Sandbox Code Playgroud)