Я экспериментировал с API задач скрипта Google Apps для создания новых задач из писем. Я успешно создал TasksList и Tasks в этих списках, используя оба следующих подхода. Однако я пытался создать дочернюю задачу, используя необязательный «родительский» ресурс, но безуспешно. Я пытаюсь воспроизвести функцию «отступа» задачи, доступную в Задачах Google, которая заставляет tak отображаться как дочерний элемент задачи, предшествующей ему. Кому-нибудь удалось заставить это работать с помощью API?

Подход 1-

taskListId = getTaskListID("My Projects");
var taskDetails = {
  title: "Task 1",
  notes: "This is a child task",
  parent: "Project A"
};
Tasks.Tasks.insert(taskDetails, tasklistId);

Подход 2: -

taskListId = getTaskListID("My Projects");
var newTask = Tasks.newTask().setTitle(title);
newTask.setParent("Project A");
Tasks.Tasks.insert(newTask, tasklistId);

В обоих случаях сценарий создает задачу («Задача 1») в списке задач («Мои проекты»), но я не могу заставить ее отображаться как дочерняя (с отступом) задача в существующей задаче («Проект A»).

Кто-нибудь может пролить свет на это?

1
Aurovrata 2 Май 2014 в 19:19

3 ответа

Лучший ответ

Хорошо, я наконец нашел ответ на вышесказанное ...

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

Затем я понял, что родительский элемент задачи должен быть установлен после того, как он был вставлен в TasksList, а не как часть инициализации новой задачи, поэтому вот как это теперь выглядит:

var taskListID = getTasklistId_(tasklistName);
var parentTask = getParentTask_(projectName,taskListID);
var taskDetails = {
  title: title,
  notes: notes,
  parent: parentTask["id"],
  position: parentTask["idx"]
};
var newTask = Tasks.newTask().setTitle(title);
newTask = Tasks.Tasks.insert(newTask, taskListID, taskDetails);
newTask.setParent(parentTask["id"]);

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

function getParentTask_(taskName, taskListId) {
var tasks = Tasks.Tasks.list(taskListId);
  var taskID;
  var position;
  if (tasks.items) {
    for (var i = 0; i < tasks.items.length; i++) {
      var task = tasks.items[i];
      if(taskName == task.title){ 
        taskID = task.id;
        Logger.log('Task with title "%s" and ID "%s" was found.', task.title, task.id);
      }
      //lets pick up the last child task's position in order to insert the new task below
      if(taskID == task.parent) position = task.position;
    }
  } 
  if( taskID == null){
      var newTask = Tasks.newTask().setTitle(taskName);
      newTask = Tasks.Tasks.insert(newTask,taskListId);
      taskID = newTask.id;
      position = newTask.position;
   }
  var result = {
    id: taskID,
    idx: position
  };
  return result;
}

Я надеюсь, что приведенное выше поможет кому-то проявить творческий подход к API задач Google Mail.

PS: Я использовал это, чтобы связать плагин Wordpress WP Project Manager, который создает автоматические рассылки новых задач и комментариев. Для полной реализации вы можете увидеть этот пост.

1
Aurovrata 5 Май 2014 в 14:36

Чтобы поместить вашу задачу (Дочерний) в какую-либо другую задачу (Родительский), вы должны сделать следующее: (Код ниже на языке Java):

Шаг 1: внимательно прочтите эту документацию: Используйте параметры задач, специально прочтите о том, что является родительским и предыдущим.

Шаг 2: Теперь напишите свой код:

//first add parent step 
Task parentTask = service.tasks().insert(taskList.getId(), task). execute();

//now add child task say,session1
Task childTask=new Task();
childTask.setTitle("Session1");
Task response = service.tasks().insert(taskList.getId(), task). execute();

//now move this child task  under  parent task
service.tasks().move(taskList.getId(),response.getId()).setParent(parentTask.getId()).execute();

Надеюсь, это кому-то поможет !!

0
VIjay J 21 Авг 2015 в 06:27