見出し画像

Googleスプレッドシートで業務を効率化(28):Google ToDoリストを使ったタスク管理表をチーム共有する方法

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

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

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

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  var tasks = [];

  for(i=2;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 time = new Date(sheet.getRange(i,4).getValue());
    var due = Utilities.formatDate(day, "Asia/Tokyo", "yyyy-MM-dd") +
     "T" + Utilities.formatDate(time, "Asia/Tokyo", "HH:mm:ss") + ".000Z";
    var parent = Number(sheet.getRange(i,5).getValue());

    if(status == '') {
      const task = {
        title: title,
        due: due
      }
      if(typeof tasks[parent] !== 'undefined') {
        tasks[i] = Tasks.Tasks.insert(task, todoid, {parent: tasks[parent]}).getId();
      } else {
        tasks[i] = Tasks.Tasks.insert(task, todoid).getId();
      }
    }
  }
}

function finish() {
  var tasks = Tasks.Tasklists.list();
  var items = tasks.items;
  var finish = [];
  var finishTime = [];
  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);
          finishTime.push(todos[j].updated);
        }
      }
      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('終了');

      var index = finish.indexOf(title);
      var date = new Date(finishTime[index]);
      var time = Utilities.formatDate(date, "Asia/Tokyo", "HH:mm") 
      sheet.getRange(i,6).setValue(time);
    }
  }
}

function share() {
  var id = "[[スプレッドシートID]]";
  var shareSheet = SpreadsheetApp.openById(id).getSheetByName("シート1");
  var lastShareRow = shareSheet.getLastRow();

  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  var email = Session.getActiveUser();

  for(i=2;i<=lastRow;i++) {
    shareSheet.getRange(lastShareRow+i-1,1).setValue(email);
    for(j=1;j<=6;j++) {
      var value = sheet.getRange(i,j).getDisplayValue();
      shareSheet.getRange(lastShareRow+i-1, j+1).setValue(value);
    }
  }
}

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


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