見出し画像

Googleスプレッドシートで業務を効率化(18):タスク管理をGoogle Todo リストと連携する方法

今回利用したスクリプトのコードになります。動画の中で使い方を説明していますのでぜひご活用ください。

function start() {
  var tasks = Tasks.Tasklists.list();
  var items = tasks.items;
  var todoid;

  for (let i = 0; i < items.length; i++) {
    console.log("TITLE:"+items[i].title);
    if(items[i].title == 'きょうやること') {
      todoid = items[i].id;
      break;
    }
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  for(i=1;i<=lastRow;i++) {
    var title = sheet.getRange(i,2).getValue();
    var status = sheet.getRange(i,3).getValue();
    var array = [];
    if(status == '') {
      const task = {
        title: title
      }
      Tasks.Tasks.insert(task, todoid);
    }
  }

}

function finish() {
  var tasks = Tasks.Tasklists.list();
  var items = tasks.items;
  var finish = [];
  var yet = [];

  for (let i = 0; i < items.length; i++) {
    if(items[i].title == 'きょうやること') {
      var options = {
        showCompleted: true,
        showHidden: true,
      }
      todos = Tasks.Tasks.list(items[i].id, options).items;
      for(let j=0;j<todos.length;j++) {
        if(todos[j].status === 'needsAction') {
          yet.push(todos[j].title);
        } 
        else if(todos[j].status === 'completed') {
          finish.push(todos[j].title);
        }
        Tasks.Tasks.remove(items[i].id, todos[j].id);
      }
      break;
    }
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  for(i=1;i<=lastRow;i++) {
    var title = sheet.getRange(i,2).getValue();
    var status = sheet.getRange(i,3).getValue();

    if(status === '' && finish.indexOf(title) != -1) {
      sheet.getRange(i,3).setValue('終了');
    }
  }
}

インストールがうまくいかない!などにつきましては以下のサイトからお気軽にお問い合わせください。

(追記:日付反映付きスクリプト)動画の視聴者様からコメントいただきました。TODOリストの方に日付が反映させる方法が抜けておりましたので、反映させたスクリプトを再度アップいたします。差し替えてご利用ください。

function start() {
  var tasks = Tasks.Tasklists.list();
  var items = tasks.items;
  var todoid;

  for (let i = 0; i < items.length; i++) {
    console.log("TITLE:"+items[i].title);
    if(items[i].title == 'きょうやること') {
      todoid = items[i].id;
      break;
    }
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  for(i=1;i<=lastRow;i++) {
    var title = sheet.getRange(i,2).getValue();
    var status = sheet.getRange(i,3).getValue();
    var day = new Date(sheet.getRange(i,1).getValue());
    var due = Utilities.formatDate(day, "Asia/Tokyo", "yyyy-MM-dd") + "T00:00:00.000Z";

    var array = [];
    if(status == '') {
      const task = {
        title: title,
        due: due
      }
      Tasks.Tasks.insert(task, todoid);
    }
  }

}

function finish() {
  var tasks = Tasks.Tasklists.list();
  var items = tasks.items;
  var finish = [];
  var yet = [];

  for (let i = 0; i < items.length; i++) {
    if(items[i].title == 'きょうやること') {
      var options = {
        showCompleted: true,
        showHidden: true,
      }
      todos = Tasks.Tasks.list(items[i].id, options).items;
      for(let j=0;j<todos.length;j++) {
        if(todos[j].status === 'needsAction') {
          yet.push(todos[j].title);
        } 
        else if(todos[j].status === 'completed') {
          finish.push(todos[j].title);
        }
        Tasks.Tasks.remove(items[i].id, todos[j].id);
      }
      break;
    }
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  for(i=1;i<=lastRow;i++) {
    var title = sheet.getRange(i,2).getValue();
    var status = sheet.getRange(i,3).getValue();
    
    if(status === '' && finish.indexOf(title) != -1) {
      sheet.getRange(i,3).setValue('終了');
    }
  }
}

この記事が気に入ったらサポートをしてみませんか?