Notionで管理するタスクを自動でGoogleスプレッドシートに出力する方法

日々のタスク管理にNotionを使っている方も多いのではないでしょうか。しかし、「データ分析やチーム共有にはスプレッドシートの方が便利…」と感じた経験はありませんか?

この記事では、Notionで管理しているタスクをGoogleスプレッドシートに自動出力し、締切が近いタスクをハイライト表示する方法をご紹介します。

エンジニアでなくても取り組めるよう、必要な手順を丁寧に解説していきます。

当ブログがオススメする

業務自動化サービスランキング

なお、業務効率化や工数削減を目指しているものの、どの業務から自動化すべきか、どのツールや手段が自社に合っているのかがあいまいな方は、「業務自動化プラン診断」をお試しください。

かかる時間は1分ほど。4つの質問に答えるだけで、あなたに最適な自動化対象業務や、推奨される自動化手段を診断してもらえます。

効率よく自社に適した業務効率化を知りたい方は、ぜひ一度お試しください。

\ 4つの質問に答えるだけ /

目次

こんなシーンでの活用に適しています

チームでタスクの進捗を一覧で確認したいとき
 → メンバーごとのタスク状況をスプレッドで一覧表示することで、共有がスムーズに。

締切間近のタスクを見逃さずに管理したいとき
 → 締切の近いタスクが自動で黄色表示され、視認性がアップします。

社内会議や報告書のために、Notionの情報をスプレッド形式で出力したいとき
 → 毎回手動でコピペせずに済むため、作業ミスも防げます。

Notionで管理するタスクを自動でGoogleスプレッドシートに出力する方法

メリット無料で柔軟性が高く、締切管理やチーム共有に効果的です。
デメリット初期設定にAPIやスクリプトの知識が少し求められます。
難易度・面倒さ手順通りに進めれば初心者でも可能ですが、やや中級者向けの内容です。
特徴GASとNotion APIを活用することで、定期的な自動更新と色分けが可能です。
価格すべて無料ツールで完結でき、ランニングコストはかかりません。

用意するもの

①Notionアカウント

②Googleアカウント

設定手順

 ステップ1:Notion側の準備

すでにデータベースでタスク表を作成されている場合は、この手順をスキップしてください。

① タスクデータベースを作る

Notionで新しいページを作成します(左下の「+新規」)

ページのテンプレートで「データベース」を選ぶ

以下のカラムを作ってください:

  • 「タスク名」(デフォルトである「名前」カラムを変更)
  • 「締切」→ プロパティを「日付」にする
  • 「ステータス」→ プロパティを「セレクト」にする(例:「未着手」「進行中」「完了」など)

🪜 ステップ2:Notion APIの設定

① Notion API連携用のキーを作成

下記のURLにアクセス
 👉 https://www.notion.so/my-integrations

「+ New integration(新しいインテグレーション)」をクリック

名前に「TaskToSheet」などを入力
関連ワークスペースにタスク表を持っているワークスペースを選ぶ。

「種類」は何もいじらなくてOK
「保存」を押すと「内部インテグレーションシークレット」が表示されるので、コピーしてどこかにメモ

② データベースにAPIのアクセスを許可

設定する部分が下の方にあり、見つけにくいかもしれませんので、スクロールして確認してください。

Notionで作成したタスクページを開く

右上の「⋯」→「接続」をクリック

さっき作ったインテグレーション(例:TaskToSheet)を選んで接続する


③ データベースIDを取得

  1. タスクページを開いて、上のURLをコピー
  2. 以下のようなURLになっているはず:

https://www.notion.so/XXXXXXXX?v=YYYYYYYY

  1. XXXXXXXX の部分が「データベースID」です

🪜 ステップ3:Googleスプレッドシート側の準備

① スプレッドシートを作る

Googleドライブで「新規作成」→「Googleスプレッドシート」

「Notionタスク出力」などと名前をつける
任意でA1に「タスク名」、B1に「締切」、C1に「ステータス」と書いておくと分かりやすいです

🪜 ステップ4:GAS(Google Apps Script)を使う

GASとは、主にスプレッドシートなどでプログラミングした関数を使うために使われます。今回はプログラミング済みの文字列をコピペするだけです。

① スクリプトエディタを開く

スプレッドシートの上メニュー「拡張機能」→「Apps Script」をクリック

新しいタブでスクリプトエディタが開く

② スクリプトを貼り付ける

以下のスクリプトをまるごと貼り付けてください。
※【YOUR_NOTION_API_KEY】と【YOUR_DATABASE_ID】は、先ほど控えた値に書き換えてください。

const NOTION_API_KEY = '【YOUR_NOTION_API_KEY】';

const DATABASE_ID = '【YOUR_DATABASE_ID】';

function fetchNotionTasks() {

  const url = `https://api.notion.com/v1/databases/${DATABASE_ID}/query`;

  const options = {

    method: 'post',

    headers: {

      'Authorization': `Bearer ${NOTION_API_KEY}`,

      'Notion-Version': '2022-06-28',

      'Content-Type': 'application/json'

    }

  };

  const response = UrlFetchApp.fetch(url, options);

  const data = JSON.parse(response.getContentText());

  return data.results.map(page => {

    const title = page.properties['タスク名']?.title[0]?.plain_text || '';

    const date = page.properties['締切']?.date?.start || '';

    const statusProp = page.properties['ステータス'];

    // ② ?? と || を混在 → ?? 連鎖を()で囲んでから || ''

    const status =

      (

        statusProp?.status?.name ??

        statusProp?.select?.name ??

        (Array.isArray(statusProp?.multi_select)

          ? statusProp.multi_select.map(o => o.name).join(', ')

          : '')

      ) || '';

    return [title, date, status];

  });

}

function outputTasksToSheet() {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  sheet.clear(); // 見出しも含めて全消し(必要なら clearContents() に)

  sheet.appendRow(['タスク名', '締切', 'ステータス']);

  const tasks = fetchNotionTasks();

  const threshold = 3; // しきい値(日)

  // ヘルパー(JSTで日付だけを安全にパース)

  const parseDateOnly = (s) => {

    if (!s) return null;

    // 形式が "YYYY-MM-DD" のときは時差の影響を受けないように

    const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(s);

    if (m) return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));

    // 時刻付きは通常どおり

    const d = new Date(s);

    return isNaN(d) ? null : d;

  };

  const startOfToday = () => {

    const now = new Date();

    return new Date(now.getFullYear(), now.getMonth(), now.getDate());

  };

  const today0 = startOfToday();

  tasks.forEach(task => {

    const [title, deadlineStr, status] = task;

    const deadline = parseDateOnly(deadlineStr);

    sheet.appendRow([title, deadlineStr, status]);

    const rowIndex = sheet.getLastRow();  // ← appendRow直後の最終行を取得

    if (deadline) {

      const daysLeft = Math.floor((deadline - today0) / (1000 * 60 * 60 * 24));

      if (daysLeft >= 0 && daysLeft <= threshold) {

        sheet.getRange(rowIndex, 1, 1, 3).setBackground('#fff59d'); // 薄黄色

      }

    }

  });

}

③ スクリプトを保存する

Ctrl+SもしくはCommand+Sで保存します。


🪜 ステップ5:テスト実行してみる

① 実行ボタンを押す

スクリプトエディタで、右上の「outputTasksToSheet」を選択

▶ボタン(再生ボタンのようなアイコン)を押す

初回は権限の許可が求められるので、「許可」をクリックして続ける

② 結果を確認する

  • スプレッドシートにタスクが出力されていれば成功!
  • 締切が今日を含めて3日以内のタスクは黄色になります

🪜 ステップ6:定期実行の設定(自動化)

業務の状況に合わせて、実行する期間を選んでください。数分おきに確認したい場合には5分や15分、もっと長くても良い場合は1時間おきなどが選べます。

① 時間ごとに自動で動かす設定

スクリプトエディタ画面で「トリガー」アイコン(左側の時計マーク)をクリック


「トリガーを追加」→ 関数を outputTasksToSheet に設定

イベントの種類:時間主導型

頻度:15分おき/1時間おきなど自由に選ぶ

よくある質問

Notionに追加したタスクが、すぐにスプレッドに反映されないのはなぜ?

NotionはWebhook(変更を即時通知する機能)に対応していないため、GASによる**定期的なポーリング(5〜60分ごと)**で最新情報を取得しています。

GASのスクリプトを貼ってもエラーが出る場合はどうすれば?

エラーの内容を確認してください。多くの場合は下記が原因です:

  • NotionのトークンやデータベースIDが正しく設定されていない
  • Notionのインテグレーションにアクセス権限を付与していない
  • GASでAPI使用時に初回アクセス時の「権限の許可」を忘れている
もっと複雑なフィルターや通知機能も付けられる?

可能です。GASのコードを少し追加すれば、たとえば「Slack通知」「完了済みタスクの除外」「特定のユーザーのタスクのみ表示」なども実現できます。

Notionで管理するタスクを自動でGoogleスプレッドシートにうまく出力できないときは?

いくらノーコードツールとはいえ、プログラミングが未経験の方にとっては少しハードルが高く「諦めるしかない⋯」と挫折するきっかけを生みかねません。

「社内で自動化したは良いものの、自分がやめたら引き継ぐ人がいない⋯」

「一つ自動化したら、他部署からも自動化を依頼されて自分の仕事が進まない⋯」

と不安な方もいますよね。

そこで、おすすめしたいのが「ジドウカ」です。

ジドウカは、これまで合計800タスク以上の業務の自動化をしてきた実績のある法人専用の自動化サービスです。

業務の一部を“タスク単位”で自動化し、【月額1万円から】安定運用できるサブスクリプション型のサービスです。 タスクを外注するため手離れもよく、技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけで自動化することが可能です。

「わたしが自動化したい内容って自動化できるんだろうか⋯」という方には、少額・短期間での「お試し開発」があるので、お気軽にご活用ください。

自社で自動化する際によくある失敗ランキング

自動化ツールを導入すれば業務が自動化され、効率が劇的に向上する——。 そう考えている企業は多いですが、実際には多くの企業が自動化ツールを十分に活用できていません。 有名な自動化ツールであるRPAを例にあげても、導入した企業の実態は理想と大きく異なった結果となっています。

RPA導入企業の約60%が「あまり活用できていない」と回答

多くの企業がRPAを導入しているにも関わらず、約60%の企業が「期待したほど活用できていない」と感じているというデータです。これは、「導入しただけでは、業務改善につながらない」という現実を示しています。

RPAの効果を実感できない要因は『RPA開発が進んでいない』

「RPAの効果を実感できていない」と回答した企業の多くが、その理由として「RPA開発が進んでいない」「他業務・他部署への展開ができていない」ことを挙げています。   「〇〇業務はツールを導入すればすぐにラクになるはず」と思って、自社で自動化に挑戦した方も多いのではないでしょうか?しかし私たちには、こんな“あるあるの失敗談”がよく届きます。

🥇 第1位:初期設定でつまずき、結局断念…

思っていたより設定が複雑で、ツールの仕様を理解する前に挫折してしまうケース。 特にRPAツールやノーコードツールは、「慣れるまでが大変」という声が多いです。

🥈 第2位:担当者が辞めて、運用不能に…

担当者が社内で唯一のキーマンだった場合、その人がいなくなると全て止まってしまうという問題が発生します。 しかも、「誰も中身が分からないから触れない」という状況になりがち。

🥉 第3位:不具合や修正対応に時間がかかる…

自動化が止まったとき、「誰が見ればいいのか分からない」「ベンダーに相談するのも手間」という理由で、対応が後手に。 気づけばその対応に何時間も時間を取られ、本業に集中できなくなってしまうことも…。   実はよくある…自社で自動化に挑戦したときの“落とし穴” 共通するのは「すべて自社で完結しようとした」こと。 このようなケースに共通するのが、「最初から最後まで、すべて自社で完結しようとした」点です。 最初はうまくいっても、長期的に安定した自動化運用には、継続的な保守や柔軟な調整が不可欠です。

安定的に自動化したいならジドウカがおすすめ

 「ツールを入れただけ」では業務はラクになりません 「業務をラクにする自動化」のためには、設定・運用・トラブル対応まで含めてプロに任せるのが最も確実です。

ジドウカとは?

業務の一部を“タスク単位”で自動化し、月額で安定運用できるサブスクリプション型のサービスです。 技術のことが分からなくても、「こういう作業をラクにしたい」と伝えるだけでOK。

ジドウカでできること(業務例)

・定期レポートの自動作成とSlack送信 ・受注データのExcel整形とkintone登録 ・競合サイトの自動モニタリングとアラート通知 ・営業リストの自動生成とCRMへの投入 など

ジドウカが選ばれる理由

弊社の自動化サービス「ジドウカ」は、1社1社、1タスク1タスクに合わせて完全オーダーメイドで開発するサービス担っています。
  • ヒアリングから開発・運用まで丸ごとサポート
  • トラブル発生時には即時対応
  • 月額料金内で自由に修正をご依頼可能
実際に多くのお客様から「自社での自動化運用に失敗した後に依頼してよかった」と高評価をいただいています。

まとめ

Notionでタスクを管理しているけれど、「チームで共有するにはスプレッドシートの方が見やすい」と感じている方には、今回ご紹介した自動出力の仕組みがぴったりです。

手順通りに進めれば、ノーコードでは実現しにくい柔軟な運用が自力で構築できます。

「うまくいかない」「もっと複雑な処理を任せたい」と思ったときは、プロに相談するのも一つの方法です。たとえば【ジドウカ】のような業務自動化サービスを使えば、技術に不安があっても、月1万円から簡単に始められます。

日々の業務に追われる前に、自分がやらなくてもいい作業は“仕組み化”してみてはいかがでしょうか。

目次