GASでTasks(ToDo)追加する

GAS
function getTasksId(){
  const myTaskLists = Tasks.Tasklists.list();
  let toDoList = myTaskLists.items[0];
  const myTaskListID = toDoList.id
  console.log(myTaskListID);

  return myTaskListID;
}

ひとまずこの関数で自分のタスクIDが分かります。

関数実行しなくても下記ページで「Execute」するとIDが返ってくるので自分のID取得できます。
https://developers.google.com/tasks/reference/rest/v1/tasklists/list

そしてGASでやるときはTasksサービスを追加しましょう。

サービスアクセスに対する許可についてはすべて許可してください。
安全ではないページとか出ますが詳細表示から行けば許可できます。

これでToDoにタスクを追加する準備ができました。

それで下記コードでタスクを追加してみましょう。

function addTask() {
  const id = getTasksId(); //自分のタスクIDベタ書きでもいいです。
  const now = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
  const today = Utilities.formatDate(now, "JST", "yyyy-MM-dd");
  const task = {
    'title': 'タスクのタイトル',
    'notes': 'タスクの詳細',
    'due': today + "T00:00:00.000Z" //締切期限です。
  };
  Tasks.Tasks.insert(task, id);
  return;
}

時間のところはちょっと手をかけないといけませんでした。
タイムゾーンの取得とフォーマットのところですね。お気を付けください。
また、開始日はAPIからは設定できないようでした。期限は設定できるので追加日=開始日という運用ですかね。

スプレッドシートなどから情報を取得して定期的にToDoにタスクを追加する=自動でToDoに締切やルーティン業務を追加できるのでタスクの抜け漏れ防止に使えると思います。
GASでやれば他のメンバーにも追加していけるのでいいのではないでしょうか?

実際の使い方では複数のタスクを追加できるようにすると思います。
タスクの内容も様々に変わるでしょうから、タスク追加する関数に引数でタスクのタイトルや詳細を渡してあげるやり方がよさそうです。

function getTasksId(){
  const myTaskLists = Tasks.Tasklists.list();
  let toDoList = myTaskLists.items[0];
  const myTaskListID = toDoList.id
  console.log(myTaskListID);
  return myTaskListID;
}

function createTasks(){
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  const data = sheet.getRange("A2:B").getValues().filter(function(x){return !(x[0] === null || x[0] === undefined || x[0] === "");});
  let task = {},tasks = [];
  for(let i = 0; i < data.length; i++){
    task = {
      'title': data[i][0],
      'notes': data[i][1]
    }
    tasks.push(task);
  }
  addTask(tasks);
}

function addTask(tasks) {
  const id = getTasksId();
  const now = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
  const today = Utilities.formatDate(now, "JST", "yyyy-MM-dd");
  for(let i = 0; i < tasks.length; i++){
    let task = {
      'title': tasks[i].title,
      'notes': tasks[i].notes,
      'due': today + "T00:00:00.000Z"
    };
    for(let i = 0; i < id.length; i++){
      Tasks.Tasks.insert(task, id);
    }
  }
  return;
}

入りましたね。

コメント

タイトルとURLをコピーしました