Как проверить завершенные задачи Google в скрипте Google?

Я пытаюсь написать скрипт Google, реализующий идею, содержащуюся в этом псевдокоде:

access a specific Google tasklist

for each task in that tasklist {
    if the task is completed {
        perform an operation
    }
}

Я столкнулся с проблемой: когда мой скрипт обращается к определенному списку задач, я могу получить информацию только о незавершенных задачах, а завершенные задачи, похоже, исчезли.

Сначала идея казалась достаточно простой. Я скопировал код с веб-страницы службы задач Google, которая должна «перечислять задачи в заданном списке задач» (https://developers.google.com/apps-script/advanced/tasks) и добавил один оператор if в цикл for:

function listTasks(taskListId) {
  var tasks = Tasks.Tasks.list(taskListId);
  if (tasks.items) {
    for (var i = 0; i < tasks.items.length; i++) {
      var task = tasks.items[i];

      Logger.log('Task with title "%s" and ID "%s" was found.',
                 task.title, task.id);

      if (task.status == "completed") {
          //perform operation
      }
    }
  } else {
    Logger.log('No tasks found.');
  }
}

Однако, когда я проверил журналы, я заметил, что все незавершенные задачи были перечислены, но ни одна из моих завершенных задач не была указана. Я попытался запустить сценарий в списке задач только с завершенными задачами, и вывод журнала был «Задачи не найдены».

Кто-нибудь знает, как найти выполненные задачи в заданном списке задач? Кажется, это должно быть возможно, исходя из того факта, что Zapier выполняет операции для завершенных задач, как описано в этом другом посте: Как запустить скрипт Google, когда задача Google отмечена как выполненная


person Tobias Letak    schedule 18.10.2018    source источник
comment
Упс. Я не нашел никаких статей о stackoverflow, когда использовал панель поиска, но я только что проверил страницу тегов google-tasks-api, и похоже, что у кого-то была такая же проблема, и о ней было сообщено в Google: stackoverflow.com/questions/52179087/ . Если кто-то знает что-то еще, дайте нам знать, но похоже, что это может быть просто ошибка.   -  person Tobias Letak    schedule 18.10.2018


Ответы (3)


У меня тоже была эта проблема. Вам нужно сообщить Task API, что вы хотите, чтобы List Tasks также возвращал завершенные задачи.

Я нашел ответ здесь: https://developers.google.com/tasks/v1/reference/tasks

Я использовал PHP, и вы должны сообщить службе Google, что вам нужны «скрытые» задачи. Кажется, завершено == скрыто. Если вы хотите удалить, вы также можете отправить этот параметр.

$optParams = array(
    'showHidden' => true,
    'showDeleted' => true,
);

$GTresults = $service->tasks->listTasks($tasklist, $optParams);

Надеюсь, это поможет.

Отредактировано здесь: добавлен пример цикла на основе завершенного:

$retrievedTask = $service->tasks->get($tasklist, $taskID);

if($retrievedTask->getStatus() == "completed") {
    echo "GT uncompleted", "\n";
}
person Jon    schedule 26.11.2018

Просто отправьте необязательные параметры в функцию:

var optionalArgs = {
    maxResults: 100,
    showHidden: true,
    showDeleted: true
  };
var tasks = Tasks.Tasks.list(taskListId, optionalArgs);
person Miroslav    schedule 09.02.2019

У меня была такая же проблема. И я обнаружил, что могу получать выполненные задачи с помощью API, если выполняю задачу с помощью старого пользовательского интерфейса задач Google (https://mail.google.com/tasks/canvas).

Как бы то ни было, я не мог получить их, если выполнил задачу с помощью нового пользовательского интерфейса Gmail. Как вы указали в комментарии, эта проблема может быть вызвана новым пользовательским интерфейсом Gmail.

person takahiko    schedule 28.11.2018