kn-sharoushi.com Open in urlscan Pro
162.43.118.83  Public Scan

URL: https://kn-sharoushi.com/20220510how_to_getlist_from_googletasks/
Submission: On December 14 via api from US — Scanned from JP

Form analysis 1 forms found in the DOM

GET https://kn-sharoushi.com/

<form role="search" method="get" action="https://kn-sharoushi.com/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search"><label class="wp-block-search__label" for="wp-block-search__input-1">検索</label>
  <div class="wp-block-search__inside-wrapper "><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required=""><button aria-label="検索" class="wp-block-search__button wp-element-button"
      type="submit">検索</button></div>
</form>

Text Content

野口香社会保険労務士事務所

群馬県にある社会保険労務士事務所のページです。

 * ホーム
 * 野口香プロフィール
 * メール顧問サービス
 * メール相談ライト
 * 学童保育向メール顧問サービス
 * Excel相談
 * 各種サービスと料金表
 * プライバシーポリシー
 * 特定商取引法表示

 * HOME
 * GAS
 * GASでGoogle Tasks(ToDo)の完了済みタスクもすべて取得する方法


GASでGOOGLE TASKS(TODO)の完了済みタスクもすべて取得する方法

 * [記事公開]2022.05.10
 * GAS
 * GAS, Google Tasks

GmailにあるToDoを重宝に使っています。PCでもスマホでも使えるので便利です。デフォルトで存在する「MyTask」に何もかも記録しては完了、記録しては完了を繰り返してきましたが、ある日の完了件数や、あのタスクはいつ完了したんだっけ?ということを調べたくなりました。

目次
 * 1. 参考にしたサイト
 * 2. 完了済みのタスクも抽出する方法
 * 3. 完成コード


参考にしたサイト


毎朝GASでGoogle Tasks(ToDo)を取得して期限切れタスクをSlackで教えてもらう | CODE:LIFE

今回ToDoのタスクを取得するにあたって参考にしたのが、上記のサイトです。

こちらのサイトにほとんどコードは載っていますし、どうやってGoogle Taskにアクセスするかも説明してありますので、私のブログでは省略します(他力本願)。

唯一、物足りなかったのがこちらです↓

> デフォルトで完了済みタスクは取得しないっぽい。完了済みはどうやって取るんだろう。

この方が書いているとおり、コードを実行しても、現在のタスクしか取得できません。

現在未完了のタスクだけが抽出される。

でも私は完了した分も見たいのです。

完了分。27件ある。


完了済みのタスクも抽出する方法

完了済みのタスクを抽出する方法は、こちらのサイトを参考にしました。

【GAS】Google Apps Script 活用事例 Google Task APIを使ってみよう。

このサイトにあったコードを実行してみたら、generateArray_()のところで未定義でエラーとなったため、私の環境では実行不可でした。でも、コードの内容はとても参考になったので、さきほどのベイマックスさんのコードをカスタマイズする形で実装しました。

ベイマックスさんの56行目

const tasks = Tasks.Tasks.list(taskList.id).getItems(); // リストからタスクを取得

これを

const tasks = Tasks.Tasks.list(taskList.id,options).getItems(); // リストからタスクを取得

↑こんな風に、optionsを引数に追加しました。

optionsの中身は↓です。

//タスク全部取得オプション
const options = {
    showCompleted: true,
    showDeleted: true,
    showHidden: true,
};

実行した結果はこんな風になりました。


完成コード

// シート取得
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const sheetToDo = spreadSheet.getSheetByName("ToDo");

//タスク全部取得オプション
const options = {
    showCompleted: true,
    showDeleted: true,
    showHidden: true,
};
/**
 * Google Tasksのリストからタスクを取得してスプレッドシートにセット
 */
function getToDo(){
  // シート2行目以下をクリア
  const lastRow = sheetToDo.getLastRow();
  const lastColumn = sheetToDo.getLastColumn();
  sheetToDo.getRange(2, 1, lastRow, lastColumn).clearContent();
  
  // タスク取得
  const table = getLists_();
  
  if (table.length) {
    sheetToDo.getRange(2, 1, table.length, table[0].length).setValues(table); // シートに出力
    spreadSheet.toast(`${table.length}件のタスクを取得しました。`, 'Google Tasks 取得完了', 5); // 完了メッセージ表示
  } else {
    spreadSheet.toast('取得結果が0件です。', 'Google Tasks 取得完了', 5); // エラーメッセージ表示
  }
}

/**
 * Google Tasksからリストを取得
 * @return {Array} 取得結果の二次元配列
 */
function getLists_(){

  const lists = Tasks.Tasklists.list().getItems(); // リストを全て取得
  
  let table = new Array(); // 配列初期化
  for (let i = 0; i < lists.length; i++) {
    table = table.concat(getTasks_(lists[i])); // テーブルにデータを追加
  }
  
  return table
}

/**
 * Google Tasksのリストからタスクを取得
 * @param {TaskList} taskList 取得対象リストのオブジェクト
 * @return {Array} 取得結果の二次元配列
 */
function getTasks_(taskList) {
  const tasks = Tasks.Tasks.list(taskList.id,options).getItems(); // リストからタスクを取得
  const table = new Array(); // 配列初期化
  
  if (tasks) {
    
    for (let i = 0; i < tasks.length; i++) {
      let row = new Array();
      row.push(taskList.title); // リスト名
      row.push(tasks[i].parent); // 親タスク
      row.push(tasks[i].title); // 件名
      row.push(tasks[i].status); // ステータス
      let due = tasks[i].due ? new Date(tasks[i].due) : "";
      row.push(due); // 期限
      let updated = tasks[i].updated ? new Date(tasks[i].updated) : "";
      row.push(updated); // 更新日時
      row.push(tasks[i].notes); // メモ
      
      Logger.log(row);
      
      table.push(row); // 配列に追加
    }
    
  } else {
    Logger.log(`リスト「${taskList.title}」にタスクはありません`);
  }
  
  return table
}
/**
 * メニュー追加
 */
function onOpen() {
  const ui = SpreadsheetApp.getUi(); // UIクラス取得
  const menu = ui.createMenu("GAS"); // メニュー名セット
  menu.addItem("Google Tasks取得", "getToDo"); // 関数セット
  menu.addToUi(); // スプレッドシートに反映
}


 * 前の記事
   
   
   休日をまたぐ深夜労働の勤怠管理【休日と労働日の区別】 2022.05.09

 * 次の記事
   
   
   PC起動時にバッチファイルで自動化【作業効率化で時間短縮】 2022.05.11


関連する記事


 * ショートカットで混乱【GAS】【EXCEL】 2023.01.01
   
   GASのショートカットキーはExcelと互換性のあるところもあるのですが、違うところも多く、なかなか苦戦しています。[…]


 * 【GAS】一行マクロ【ショートカットキー】 2022.12.31
   
   GASでも一行マクロを作成できたらよいなと思い、ショートカットキーの作成方法を調べました。[…]

検索
検索


ご相談はこちら

 * メール顧問サービス
 * メール相談ライト
 * 学童保育向メール顧問サービス
 * Excel相談


自己紹介

 * 野口香プロフィール
 * 事務所概要(フッターにリンクあり)


よく読まれている記事


RANKING


 1.  【EXCEL】POWERQUERYで正規表現を使う方法【M式言語】
     
     Excel


 2.  照合省略と17条付記
     
     社会保険労務士


 3.  【外国人技能実習生】国民年金の免除申請について【入国後講習中】
     
     外国人技能実習生


 4.  照合省略(17条の付記)にかかる労働局からの通知が来ました。
     
     社会保険労務士


 5.  【MAC】マウス操作を自動化するツール【AUTOMATOR】
     
     Mac


 6.  VBAで開いたフォルダをVBAで閉じるには
     
     知恵袋


 7.  【EXCELVBA】VBAからFIREFOXをSELENIUMなしでスクレイピング
     
     VBA


 8.  野口香プロフィール
     
     自分のこと


 9.  外国人技能実習生の宿舎に必要な鍵付き金庫
     
     外国人技能実習生


 10. TWITTERのフォロー一覧を取得しようとした話。
     
     Excel

購読するを押すと、ブログの更新をプッシュ通知します

購読する


アーカイブ

 * 2023年11月
 * 2023年10月
 * 2023年9月
 * 2023年8月
 * 2023年7月
 * 2023年6月
 * 2023年5月
 * 2023年4月
 * 2023年3月
 * 2023年2月
 * 2023年1月
 * 2022年12月
 * 2022年11月
 * 2022年10月
 * 2022年9月
 * 2022年8月
 * 2022年7月
 * 2022年6月
 * 2022年5月
 * 2022年4月


カテゴリー

ChatGPT CSS Excel ExcelVBA Firefox GAS PHP PowerPoint Selenium SeleniumBasic
Twitter VBA VBS Word WordPress WordVBA スクレイピング ハラスメント 事務所 休日 傍聴 労働基準法 労働契約法 労働時間
労働紛争 労務相談 勤務間インターバル制度 図書館 国民年金 士業 変形労働時間制 外国人技能実習生 就業規則 年次有給休暇 最低賃金 特定最低賃金 知恵袋
確定申告 社会保険労務士 群馬 群馬県 街角の年金相談センター 裁判所 迷惑メール 開業

Back to Top
 * ホーム
 * 野口香プロフィール
 * メール顧問サービス
 * メール相談ライト
 * 学童保育向メール顧問サービス
 * Excel相談
 * 各種サービスと料金表
 * プライバシーポリシー
 * 特定商取引法表示
 * 事務所概要

© Copyright 2023 野口香社会保険労務士事務所. 野口香社会保険労務士事務所 by FIT-Web Create. Powered by
WordPress.