ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】今日の予定を自動的にLINEに送信する方法(LINE アクセストークンの取得方法)
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- タスク(ToDoリスト)を読み込む方法がわかります。
- 読み込んだタスクをスプレッドシートやLINEに出力できます。
なので、サクッとマスターして
と答えてあげてください。
いただいた質問
【GAS】今日の予定を自動的にLINEに送信する方法(LINE アクセストークンの取得方法)
質問です。
今日の予定と同時にその日に登録しているタスクもまとめてLINEに送信したいのですが、可能ですか?
タスクを取得し出力する
動画はこちら
シートはこちら
※クリックするとシートが開きます。
準備 TasksAPIを有効にする
Step1.
Google Cloud console
を開きます。
以下のような画面が表示されます。
①「私は、・・・・・・の利用規約に同意します。」をチェックします。
②「同意して続行」をクリックします。
Step2.
①「Tasks API」を検索します。
Step3.
①「Google Tasks API」をクリックします。
Step4.
①「有効にする」をクリックします。
これで、「Tasks API」が有効になりました。
今度は、スクリプトエディタで「Tasks API」を使用できるようにします。
準備 サービスの追加
Step1.
スクリプトエディタを開きます。
① スプレッドシートを起動し「拡張機能」ー「Apps Script」をクリックします。
Step2.
①「サービス」をクリックします。
②「サービスを追加」ウインドウの「Tasks API」をクリックします。
③「追加」をクリックします。
これで、準備OKです。
スクリプト
タスク(ToDoリスト)の取得
/**
* 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).getItems() // リストからタスクを取得
const table = new Array() // 配列初期化
if (tasks) {
for (let i = 0; i < tasks.length; i++) {
let row = new Array()
if (tasks[i].due) { //期限があるもの
let due = Utilities.formatDate(new Date(tasks[i].due), 'Asia/Tokyo', "yyyy/MM/dd")
// console.log(due)
//今日が期限のものを抽出
if (due == Utilities.formatDate(new Date(), 'Asia/Tokyo', "yyyy/MM/dd")) {
// console.log("今日が期限のタスク")
row.push(taskList.title) // リスト名
// row.push(tasks[i].parent) // 親タスク
row.push(tasks[i].title) // 件名
// row.push(tasks[i].status) // ステータス
row.push(due) // 期限
// let updated = tasks[i].updated ? new Date(tasks[i].updated) : ""
// row.push(updated) // 更新日時
row.push(tasks[i].notes) // 詳細
console.log(row)
table.push(row) // 配列に追加
}
}
}
} else {
Logger.log(`リスト「${taskList.title}」にタスクはありません`)
}
return table
}
使用例
function calendarToLine() {
let text = ""
text += '\n' + '■今日が期限のタスク\n'
text += GetTodayTask()
console.log(text)
// sendToLine(text);//LINEにデータを送信する
}
function DspTask() {
const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ToDoリスト")
let table = getLists()
sh.getRange(2, 1, table.length, table[0].length).setValues(table)
}
/**
* 今日のタスクをテキストで返却する
* @return {String} タスクの一覧
*/
function GetTodayTask() {
let table = getLists()
let str = ""
for (let i = 0; i < table.length; i++) {
str += table[i][1] + '\n'
}
// console.log(str)
return (str)
}
最後までご覧いただきありがとうございます。
つぎはこちら
Googleカレンダーから今日の予定をGoogleスプレッドシートに取り込む
こちらの記事を参考にさせていただきました。