見出し画像

Googleスプレッドシートで業務を効率化(29):マコなり社長のタスク管理術を実践してみた

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

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 = [];

  var calendar = CalendarApp.getCalendarsByName("外部公開用")[0];

  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") + ".000+09:00";
    var parent = Number(sheet.getRange(i,6).getValue());

    var dayStr = sheet.getRange(i,1).getValue();
    var startTimeDate = sheet.getRange(i,4).getValue();
    var endTimeDate = 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();
      }

      try {
        var startDate = new Date(dayStr);
        startDate.setHours(startTimeDate.getHours())
        startDate.setMinutes(startTimeDate.getMinutes());

        var endDate = new Date(dayStr);
        endDate.setHours(endTimeDate.getHours())
        endDate.setMinutes(endTimeDate.getMinutes());

        calendar.createEvent(
          "",
          startDate,
          endDate
        );
      } catch(e) {
        Logger.log(e);
      }
    }
  }
}

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


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