0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Driveに図面を置くだけでNotionに自動登録するDX(GAS × Gemini × Notion API)

0
Posted at

「図面、どこいった?」
この一言で、地味に時間が取られていき、誰も得しない時間。

うちの会社では図面PDFを扱うので、Google Driveの所定フォルダに図面PDFを入れるだけで、Notionの図面管理DBに自動登録される仕組みを作りました。
やったことはシンプルですが、実務で効きます。

この記事は、準備 → 実装 → ハマりどころ → 安定運用まで、手順をできるだけ丁寧にまとめたものです。


1. 何を作ったのか(ゴール)

最終的なゴールはこれ。

  • Google Driveに「図面自動登録」フォルダを作る
  • 00_格納箱 に図面PDFを入れる
  • Apps Script(GAS)が定期実行(手動でもOK)
  • Gemini APIで図面から情報を抽出(顧客・図面番号・品名など)
  • Driveの 10_顧客別 にフォルダ整理して保存
  • Notionの DB_図面管理マスタ に1行(1ページ)追加
    • 図面番号・顧客・品名番号・品名・図面作成日・抽出信頼度・メーカー名
    • 本文にDriveリンクを貼る

「図面管理の入り口」を自動化することで、
脳のリソースを割かずに、自動で蓄積していくというAIネイティブなコンセプトです。


2. 全体像(ざっくり構成)

使うもの

  • Google Drive:図面PDFの置き場&整理先
  • Google Apps Script(GAS):監視・自動処理の実行エンジン
  • Gemini API:図面PDFから必要項目を抽出(JSONで返す)
  • Notion API(Internal Integration):NotionのDBに自動登録

3. Notion側の準備(図面マスタDBを作る)

3-1. Notion DB(図面マスタ)を作成

今回のDB構成(例):

  • 図面番号(タイトル)
  • 顧客(テキスト)
  • 品名番号(テキスト)
  • 品名(テキスト)
  • 図面作成日(日付)
  • 抽出信頼度(セレクト)
  • メーカー名(テキスト)

抽出信頼度は、OCRが不安な時のために作りました!
「AIが自信ない箇所だけ人間が確認」という運用ができる。


4. Notion APIの準備

Notionに自動で書き込むには、Internal integration - 内部インテグレーションが必須です。

4-1. Internal integration を作成

  • Notionの「My integrations」から新規作成
  • 種別は Internal
  • 名前はわかりやすく
    例:図面管理 自動登録(Drive→Notion)

作成すると Internal Integration Secret(トークン) が発行される。
これが NOTION_TOKEN

4-2. Notion DBにインテグレーションを接続(重要)

作っただけではDBが見えないので、DB側で接続が必要。

  • DB_図面管理マスタ を開く
  • 右上 ... などから
  • 「接続(Connections)」or「共有(Share)」で
  • 今回のインテグレーションを選択して接続する

これを忘れると、Notion APIで

  • 404 object_not_found
  • 「DBが見つからない。インテグレーションに共有してね」

というエラーが発生します。(実際エラーがでました。。)


5. database_id とは何か(Notion側の“住所”)

Notion APIに「このDBに行を追加して」と言うために、DBのIDが必要。

それが database_id
Apps Scriptのプロパティに NOTION_DB_ID として入れる。

5-1. database_id の取り方(基本はURL)

DBを「ページとして開く(フルページ)」状態で、URLから拾う。

  • URLの中の **32桁(ハイフン付きの場合もあり)**がID
  • ?v= 以降は「ビューID」なので無視してOK

ここで「親ページのID」や「ビューのID」を拾うと、
DBの存在チェックは通ったり通らなかったりして混乱するので注意。

5-2. DBが見えるか確認(Notion APIでGET)

PowerShell等で GET /v1/databases/{id} が通れば、トークンとIDは正しい。

この確認が通った時点で、Notion側の基盤はほぼ完成。


6. Google Drive側の準備(フォルダ構成)

Driveに以下を作成:

  • 図面自動登録
    • 00_格納箱(ここに入れる)
    • 10_顧客別(自動整理先)
    • 90_エラー箱(失敗時退避)

フォルダIDの取り方

フォルダURLの folders/xxxxxxxxxx がフォルダID。
これをApps Scriptに設定する。


7. Gemini APIキーの取得(Google AI Studio)

Gemini APIキーは Google AI Studioで作る。

7-1. 「プロジェクト」って何?

AI Studioの「プロジェクト」は Google Cloud Projectのこと。

  • APIキー
  • 利用量
  • 課金(必要な場合)

をまとめて管理する“箱”。

どれを選ぶ?

  • 迷ったら 新規プロジェクトを作って分けるのが安全
    例:図面管理-gemini

7-2. APIキーを発行

  • AI StudioでAPIキー作成
  • コピーして控える(これが GEMINI_API_KEY

8. Apps Script(GAS)プロジェクトの作成

ここで混乱しがちだが、Driveの右クリックで出るApps Scriptを使わず、スタンドアロンで作るのがわかりやすい。

8-1. スタンドアロン作成

ブラウザで:

これで新規Apps Scriptプロジェクトが作れる。

プロジェクト名は
図面自動登録(Drive→Notion)
みたいにしておくと後で迷子にならない。


9. Apps Scriptに設定値を入れる(スクリプトプロパティ)

Apps Script画面の

  • 歯車(プロジェクトの設定)
  • スクリプトプロパティ

に以下を登録:

Key Value
GEMINI_API_KEY Gemini APIキー
NOTION_TOKEN Notion Integration Secret
NOTION_DB_ID Notion database_id
INBOX_FOLDER_ID 00_格納箱 フォルダID
CUSTOMER_ROOT_FOLDER_ID 10_顧客別 フォルダID
ERROR_FOLDER_ID 90_エラー箱 フォルダID

ここは「設定の心臓部」。
1個でも間違えると、全てが静かにエラーが出ちゃいます。
今後、パスが変わった時に便利!


10. Apps Scriptコード

コードの処理は大きく3段階。

  1. 00_格納箱 のPDFを取得
  2. GeminiにPDFを渡し、必要項目をJSON抽出
  3. Notionにページ作成
  4. Driveに移動&整理

注意:Gemini 503(サービス一時停止)対策

Gemini側が混雑すると 503 UNAVAILABLE が出る。

このときに

  • すぐエラー箱に移す
  • 以後再処理できない

になるのは運用的にキツいので、

  • 503/429/5xxは一時エラー扱い
  • リトライ(指数バックオフ)
  • 最終的にダメなら格納箱に残す

という設計にした。


11. テスト(最初の動作確認)

11-1. 手動実行

  • 00_格納箱 に図面PDFを1枚入れる
  • Apps Scriptで runBatch を実行
  • 初回は権限許可が出るので許可

成功条件

  • Notion DBに1行増える
  • 図面リンク(Drive)が本文に貼られている
  • Driveの 10_顧客別/顧客名/図面番号/ に整理される

12. ハマりどころ集(実際にハマった)

12-1. Notion 404 object_not_found

原因:

  • database_idの取り違え(ビューID、親ページIDなど)
  • DBがインテグレーションに接続されていない
  • ワークスペースが違う

対策:

  • GET /v1/databases/{id} で確認
  • DB側の「接続」を必ず見る

12-2. Gemini 503 UNAVAILABLE

原因:

  • Gemini側の一時障害・混雑

対策:

  • リトライ+一時エラーは格納箱に残す

12-3. 「処理件数:1」なのにNotionで見えない

原因:

  • Notionのビューでフィルタ/ソートにより見えてない
  • 別DBに作っていた

対策:

  • testCreateNotionRow() でテスト行を作り、URLをログに出す
  • DBタイトルをログ出力して「本当にこのDBか」を確定

13. 自動化(5分おき実行)

手動で動いたらトリガーを設定。

Apps Scriptの「トリガー」から

  • 実行関数:runBatch
  • 時間主導型
  • 5分ごと

これで、図面を置くだけで勝手にNotionが育つ。


14. 費用はかかるのか?

結論:主にGemini APIが変動費

  • Apps Script:基本無料だがクォータ制限あり(実行回数、URL fetch等)
  • Notion API:追加の従量課金というより、Notionプランの範囲
  • Google Drive:ストレージ容量
  • Gemini API:無料枠内なら0円、超えると従量課金になる可能性がある

実務では「予算アラート」や「1日処理上限」を決めるのが安心。


まとめ:何が嬉しいのか

この仕組みで一番大きいのは、単なる自動入力じゃなくて、

  • 「図面を置くだけで、マスタが育つアナログ企業に優しい手軽さ」
  • 「検索・見積・案件管理が図面を中心に回り始める」
  • 「属人化が減る(どこにある?が減る)」

という、業務の背骨ができること。

図面は情報量が多く、しかも重要。
だからこそ入口を整えると、後工程全部に効いてくる。


付録:最低限のチェックリスト

  • Notion内部インテグレーションのSecret取得
  • DBをインテグレーションに接続(Connections)
  • database_id取得&GETで確認
  • Gemini APIキー取得(AI Studio)
  • Driveフォルダ3つ作成&ID取得
  • Apps Scriptプロパティ設定
  • runBatchで手動テスト
  • 5分トリガー設定

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?