新创建的 Google 任务省略了提供的 "TaskLink" 属性
Newly created Google Task omits the supplied "TaskLink" property
我正在尝试制作一个小 Google 脚本,它会在搜索我的 GMail 电子邮件后自动将 Google 任务添加到 "My List" TaskList
。
除了向生成 Task
的电子邮件添加 link 外,一切正常。尝试遵循 API 文档并没有真正帮助。
这是实际任务生成器函数的代码:
function addTask(taskListId, myTitle, myEmailLink) {
var task = Tasks.newTask(); // effectively same as "= {}".
task.title = myTitle
task.notes = 'blank';
task.links = [{}]
task.links[0].description = 'Link to corresponding email';
task.links[0].type = 'email';
task.links[0].link = 'myEmailLink';
task = Tasks.Tasks.insert(task, taskListId);
}
知道为什么我收到的任务没有 links
吗?
Per the Google Tasks API Documentation:
links[]
list
Collection of links. This collection is read-only.
您不能通过修改任务资源(即您的代码)来设置这些链接
task.links = [{}]
task.links[0].description = 'Link to corresponding email';
task.links[0].type = 'email';
task.links[0].link = 'myEmailLink';
只是被服务器忽略了。
据我所知,TaskLinks
在 Googleplex 之外无法使用且不可配置。 API 用户可能不存在它们。
我能够生成一个 Task
的唯一方法是使用 Gmail UI 并选择 "Add to Tasks"。生成的任务然后将此代码段包含在任务项的最后一行中:
正如其他人所指出的,根据 Google Tasks API Documentation ,不幸的是 links 集合是只读的。
作为一种可能的解决方法,您似乎可以将 link 添加到任务的注释部分,然后可以从 GMail 的任务窗格中直接单击 link。
Picture: Task with clickable link
您的函数可以修改为将 link 放在注释部分,如下所示:
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);
}
将此与 GmailApp
线程对象上的 getPermalink() 函数相结合,可以深入 link 获取您要查找的电子邮件。
Picture: Task with permalink to email
我正在编写一组脚本,除了其他一些事情外,还可以执行您正在谈论的一些事情: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);
}
我正在尝试制作一个小 Google 脚本,它会在搜索我的 GMail 电子邮件后自动将 Google 任务添加到 "My List" TaskList
。
除了向生成 Task
的电子邮件添加 link 外,一切正常。尝试遵循 API 文档并没有真正帮助。
这是实际任务生成器函数的代码:
function addTask(taskListId, myTitle, myEmailLink) {
var task = Tasks.newTask(); // effectively same as "= {}".
task.title = myTitle
task.notes = 'blank';
task.links = [{}]
task.links[0].description = 'Link to corresponding email';
task.links[0].type = 'email';
task.links[0].link = 'myEmailLink';
task = Tasks.Tasks.insert(task, taskListId);
}
知道为什么我收到的任务没有 links
吗?
Per the Google Tasks API Documentation:
links[]
list
Collection of links. This collection is read-only.
您不能通过修改任务资源(即您的代码)来设置这些链接
task.links = [{}]
task.links[0].description = 'Link to corresponding email';
task.links[0].type = 'email';
task.links[0].link = 'myEmailLink';
只是被服务器忽略了。
据我所知,TaskLinks
在 Googleplex 之外无法使用且不可配置。 API 用户可能不存在它们。
我能够生成一个 Task
的唯一方法是使用 Gmail UI 并选择 "Add to Tasks"。生成的任务然后将此代码段包含在任务项的最后一行中:
正如其他人所指出的,根据 Google Tasks API Documentation ,不幸的是 links 集合是只读的。
作为一种可能的解决方法,您似乎可以将 link 添加到任务的注释部分,然后可以从 GMail 的任务窗格中直接单击 link。
Picture: Task with clickable link
您的函数可以修改为将 link 放在注释部分,如下所示:
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);
}
将此与 GmailApp
线程对象上的 getPermalink() 函数相结合,可以深入 link 获取您要查找的电子邮件。
Picture: Task with permalink to email
我正在编写一组脚本,除了其他一些事情外,还可以执行您正在谈论的一些事情: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);
}