Недавно созданная задача Google пропускает предоставленное свойство "TaskLink"

Я пытаюсь создать небольшой скрипт Google, который бы автоматически добавлял задачи Google в "Мой список". TaskList после поиска моей электронной почты GMail.

Все идет хорошо, за исключением добавления ссылки на электронную почту, из которой 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);
}

Любые идеи, почему задание, которое я получаю обратно, не имеют links?

1 ответ

Решение

Согласно документации API Google Tasks:

links[] список
Коллекция ссылок. Эта коллекция доступна только для чтения.

Вы не можете установить эти ссылки, изменив ресурс Task, т.е. ваш код

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 и выбора "Добавить в задачи". Результирующая задача затем включает этот фрагмент в последнюю строку элемента Task:

введите описание изображения здесь

Как отмечают другие, согласно Документации API Google Tasks, коллекция ссылок, к сожалению, доступна только для чтения.

В качестве возможного обходного пути, кажется, вы можете добавить ссылки в раздел заметок задачи, и тогда ссылки будут напрямую щелкать на панели задач в 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 Объект Threads позволяет получить глубокую ссылку на электронное письмо, которое вы ищете.

Картинка: Задача с постоянной ссылкой на электронную почту

Я работаю над набором сценариев, которые выполняют некоторые вещи, о которых вы говорите, в дополнение к нескольким другим вещам: 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);
}
Другие вопросы по тегам