好的,我终于找到了上面的答案......
我在上面的代码中犯了一个基本错误,我假设任务的父设置是父任务名称,而实际上它应该是任务 API 分配给它的父任务 ID。
然后我意识到应该在将任务的父级插入到 TasksList 之后设置它,而不是作为新任务初始化的一部分,所以它现在看起来像这样:
var taskListID = getTasklistId_(tasklistName);
var parentTask = getParentTask_(projectName,taskListID);
var taskDetails = {
title: title,
notes: notes,
parent: parentTask["id"],
position: parentTask["idx"]
};
var newTask = Tasks.newTask().setTitle(title);
newTask = Tasks.Tasks.insert(newTask, taskListID, taskDetails);
newTask.setParent(parentTask["id"]);
如您所见,我必须重置新任务的父级。该getParentTask_
函数返回父任务 ID 和最后一个子元素位置以插入新任务
function getParentTask_(taskName, taskListId) {
var tasks = Tasks.Tasks.list(taskListId);
var taskID;
var position;
if (tasks.items) {
for (var i = 0; i < tasks.items.length; i++) {
var task = tasks.items[i];
if(taskName == task.title){
taskID = task.id;
Logger.log('Task with title "%s" and ID "%s" was found.', task.title, task.id);
}
//lets pick up the last child task's position in order to insert the new task below
if(taskID == task.parent) position = task.position;
}
}
if( taskID == null){
var newTask = Tasks.newTask().setTitle(taskName);
newTask = Tasks.Tasks.insert(newTask,taskListId);
taskID = newTask.id;
position = newTask.position;
}
var result = {
id: taskID,
idx: position
};
return result;
}
我希望以上内容可以帮助人们使用 Google Mail Tasks API 发挥创意。
PS:我用它来链接 Wordpress WP 项目管理器插件,该插件创建新任务和评论的自动邮件。对于完整的实现,你可以看到这篇文章。