【GAS】スプレッドシートから好きなToDoリストへ振り分け登録!

コピペでできるGAS

Googleカレンダー関連

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

Google ToDoの『マイタスク』だけに溜まっていたタスクを、仕事用・プライベート用・買い物リストなど、自分が作った好きなリストに、スプレッドシートから直接振り分けられるようになります。

なので、サクッとマスターして

と答えてあげてください。

 

質問をいただきました。

はじめまして!とてもわかりやすいです!タスクの登録先を「マイタスク」ではなく自分で新規に作成したリストに変更することは可能でしょうか??

なるほど、タスク自体が複数あるわけですね。

ちょっとやってみました。

動画はこちら

シートはこちら

*クリックすることでシートが開きます。(コピーしてお使いください)

 

事前準備

 

スクリプトエディタを開き

①「+」をクリックします。
②下にスクロールし「Google Tasks API ドキュメント」をクリックします。
③「追加」をクリックします。

 

 

スクリプト

/**
 * GoogleカレンダーのToDoリストに追加する(行ごとのリスト名に対応)
 */
function AddToDoList() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 
  // 1. 全てのタスクリスト名とIDを「辞書形式」で取得
  const taskLists = Tasks.Tasklists.list().items;
  const listDict = {};
  taskLists.forEach(list => {
    listDict[list.title] = list.id;
  });


  // 読み取り設定(画像に合わせて調整)
  const topRow = 2;     // 2行目から開始
  const lastCol = 5;     // E列まで
  const statusCellCol = 1; // A列(済)


  // 予定の一覧バッファ内の列(0始まり)
  const statusNum = 0;      // A列:ステータス
  const dayNum = 1;         // B列:期限
  const listNameNum = 2;    // C列:リスト名 ★追加
  const titleNum = 3;       // D列:タスク
  const descriptionNum = 4; // E列:詳細


  // 予定の最終行を取得
  let lastRow = sheet.getLastRow();
  if (lastRow < topRow) return;


  // 予定の一覧をバッファに取得
  const contents = sheet.getRange(topRow, 1, lastRow - topRow + 1, lastCol).getValues();


  // 順に予定を作成
  for (let i = 0; i < contents.length; i++) {
    try {
      // 「済」の場合、またはタスク名が空の場合は飛ばす
      if (contents[i][statusNum] === "済" || !contents[i][titleNum]) {
        continue;
      }


      // C列からリスト名を取得し、対応するIDを探す
      let listName = contents[i][listNameNum];
      let targetListId = listDict[listName];


      // リスト名が見つからない場合は「マイタスク(最初のリスト)」を使うかエラーにする
      if (!targetListId) {
        console.log(`リスト名「${listName}」が見つかりません。`);
        continue;
      }


      // 値をセット
      let day = contents[i][dayNum];
      let title = contents[i][titleNum];
      let notes = contents[i][descriptionNum];


      const dueStr = Utilities.formatDate(new Date(day), "Asia/Tokyo", "yyyy-MM-dd");


      const task = {
        title: title,
        notes: notes,
        due: dueStr + "T00:00:00.000Z"
      };


      // 指定したリストIDにインサート
      Tasks.Tasks.insert(task, targetListId);


      // 予定が作成されたら「済」にする
      sheet.getRange(topRow + i, statusCellCol).setValue("済");


    } catch (e) {
      Logger.log(e);
    }
  }


  Browser.msgBox("完了しました。");
}

タスク一覧のプルダウンを作るスクリプトです。
F2固定なので、必要に応じて変更してください



/**
 * スプレッドシートの特定のセル(例:A1)にリスト一覧のプルダウンを作成する
 */
function createListPicker() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const targetCell = sheet.getRange("F2"); // プルダウンを設置する場所
 
  const myTaskLists = Tasks.Tasklists.list();
  const listNames = myTaskLists.items.map(list => list.title);


  // プルダウン(入力規則)を作成
  const rule = SpreadsheetApp.newDataValidation()
    .requireValueInList(listNames, true)
    .setHelpText("登録先のリストを選択してください")
    .build();


  targetCell.setDataValidation(rule);
 
  // 初期値として現在の1番目のリスト名をセットしておくと親切
  if (targetCell.getValue() === "") {
    targetCell.setValue(listNames[0]);
  }
}

ポイント

最後までご覧いただきありがとうございます。

つぎはこちら

Googleカレンダー CSVファイルから複数の予定を一気に入力する方法
GoogleカレンダーにCSVファイルを使用して、複数の予定を一気に入力できるようになります。

Googleカレンダー関連

コメント

タイトルとURLをコピーしました