google-apps-script - 新创建的 Google Task 省略了提供的 "TaskLink"属性

标签 google-apps-script google-tasks-api google-tasks

我正在尝试制作一个小的 Google 脚本,它会在搜索我的 GMail 电子邮件后自动将 Google Tasks 添加到“我的列表”TaskList

除了添加一个指向从中生成 Task 的电子邮件的链接外,一切正常。尝试遵循 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);
}

知道为什么我收到的任务没有链接吗?

最佳答案

正如其他人所指出的,根据 Google Tasks API Documentation 不幸的是,链接集合是只读的。

作为一种潜在的解决方法,您似乎可以将链接添加到任务的注释部分,然后可以直接从 GMail 的任务 Pane 中单击这些链接。

Picture: Task with clickable 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);
}

将其与 getPermalink() 相结合GmailApp threads 对象上的函数允许获取指向您正在查找的电子邮件的深层链接。

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-apps-script - 新创建的 Google Task 省略了提供的 "TaskLink"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087830/

相关文章:

google-apps-script - 在 Google Docs 中操作 PositionedImage 并在图像周围环绕文本

javascript - 为什么这种从 `e.parameter.variableName` 方法恢复数组的尝试不起作用?

google-apps-script - 当 Google 任务标记为 "completed"时如何触发 Google Script

google-apps-script - 在 Google Apps 脚本中使用 Google 任务 API - 未配置访问权限

google-api - Google 通讯录任务日历 API 成本

javascript - 元素/隐藏元素的.setValue

google-apps-script - Google Apps 脚本限制范围

google-apps-script - 使用 Google App 脚本创建 Google 日历提醒

google-tasks-api - Google Task API将任务移到其他列表