Недавно созданная задача Google пропускает предоставленное свойство "TaskLink" - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь создать небольшой скрипт 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?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Как отмечают другие, согласно Документации 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, можно получить глубокую ссылку на искомое письмо.

Изображение: задание с постоянной ссылкой на электронную почту

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

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

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

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

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...