正如其他人所指出的,根据Google Tasks API 文档,不幸的是,链接集合是只读的。
作为一种潜在的解决方法,您似乎可以将链接添加到任务的注释部分,然后可以直接从 GMail 的任务窗格中单击这些链接。
图片:带有可点击链接的任务
可以修改您的函数以将链接放在注释部分,如下所示:
function addTask(taskListId, myTitle, myEmailLink) {
var task = Tasks.newTask(); // effectively same as "= {}".
task.title = myTitle
task.notes = 'link: ' + myEmailLink;
task = Tasks.Tasks.insert(task, taskListId);
}
将此与线程对象上的getPermalink()函数相结合,GmailApp
可以获取指向您正在查找的电子邮件的深层链接。
图片:带有电子邮件固定链接的任务
除了其他一些事情之外,我正在编写一组脚本来执行您正在谈论的一些事情:https ://github.com/tedsteinmann/gmailAutoUpdate
在我的解决方案中,我有一个函数可以抓取带有特定标签的 GMail 线程(在我的情况下为 @Task),然后创建一个任务,将主题thread.getFirstMessageSubject()
和注释设置为thread.getPermalink()
整个函数如下所示:
function processPending_() {
var label_pending = GmailApp.getUserLabelByName(LABEL_PENDING);
var label_done = GmailApp.getUserLabelByName(LABEL_DONE);
// The threads currently assigned to the 'pending' label
var threads = label_pending.getThreads();
// Process each one in turn, assuming there's only a single
// message in each thread
for (var t in threads) {
var thread = threads[t];
// Grab the task data
var taskTitle = thread.getFirstMessageSubject();
var taskNote = 'Email: ' + thread.getPermalink();
// Insert the task
addTask_(taskTitle, taskNote, getTasklistId_(TASKLIST));
// Set to 'done' by exchanging labels
thread.removeLabel(label_pending);
thread.addLabel(label_done);
}
// Increment the processed tasks count
Logger.log('Processed %s tasks', threads.length);
}