Google Sheets と Notion の連携:行の転送と確認
Google Sheets と Notion の連携でデータを転送するには、承認済みのスプレッドシート行を読み取り、各フィールドを転送先データベースのプロパティ型に対応付け、受け入れた行ごとにページを作成します。次の転送に進む前に、返された Notion ページの識別子を元の識別子と並べて記録します。以下のカタログに基づく設計は、一方向のページ作成であり、対応付けと再実行について明示的な確認段階を設けています。
スプレッドシートの列と Notion データベースのプロパティは、異なる仕様を持ちます。Status という列が、有効な選択プロパティや、その許可された値に自動的に対応するわけではありません。
執筆:Ai Flowi · 公開日
公式情報源:Google Sheets API ドキュメント、Notion API ドキュメント
元の範囲とページの識別方法を決める
読み取りが許可されているスプレッドシート、タブ、正確な範囲を特定します。各行に安定したソース ID を含め、どのフィールドを Notion のプロパティにするか合意します。無関係な非公開列が入らないよう、選択範囲を絞ります。並べ替えや行の挿入で位置は変わるため、バッチをまたいで同じレコードを特定するにはソース ID を使います。
Read Range の values は JSON です。Loop の data 入力には Table と DataFrame が記載されているため、どちらも集合を表すというだけで Read Range を Loop に直接接続してはいけません。確認して対応付けたレコードを Data → DataFrame で変換し、まず Table を確認します。
両サービスで必要な準備
Google 接続の設定で、元のシートに使う Google アカウントを認可し、Notion アカウントのデータベース用認証情報を notion_secret に渡します。サービス側の料金は別途発生し、この転送ではモデルを呼び出しません。
バッチを選ぶ前に、小規模なローカル試行で、その Notion 認証情報を使って対象データベースを確認できることを確かめます。
List Database Properties と Create Page の設定には、Notion 連携リファレンスを参照してください。
転送の対応表には、各転送先プロパティとともに、対象データベースを明記します。2つのデータベースに同じ Status プロパティがあっても、受け入れられる選択肢は異なる場合があります。似た名前の転送先の対応表を流用せず、このバッチで選んだデータベースに照らして確認します。
確認を伴う作成バッチを設定する
設定例であり、記録されたテストではありません
| コンポーネント | 設定する入力 | 作業の受け入れ確認 |
|---|---|---|
| Read Range | range_name で承認済みの見出しセルとデータセルを選び、spreadsheet_id でスプレッドシートを指定し、google_account を選びます。 | 選択範囲の各位置が、承認済みのソース見出しに引き続き対応していることを確認します。 |
| List Database Properties | notion_secret と、対象の database_id を設定します。 | 確認したスキーマが、このバッチの対象データベースのものであることを確認します。 |
| JSON Operations | "JQ Expression" を operations で選び、渡された data に適用します。実際の行フィールドに名前を付け、ID がない行を却下する query を記述します。 | 受け入れたすべての行に、確認済みのプロパティ対応とソースの識別情報があることを確認します。 |
| Data → DataFrame と Loop | 対応付けた JSON を data_list に接続し、得られた dataframe を Loop の data に接続します。 | 作成結果の記録は、それぞれソース ID で対応付けます。行の位置だけで対応付けてはいけません。 |
| Create Page | このバッチの database_id を選び、確認したプロパティ文字列を properties_json に渡し、認証情報を notion_secret に指定します。前段で生成する場合は、確認済みの Message 変換を使います。 | 作成されたページを開き、ステータスを承認された対応付けの判断と比較します。 |
- 行を読み取り、名前を付けます。 テスト用シートで Read Range を実行します。安定したソース ID を保持し、実際の各位置を合意した見出しに対応付けます。短い行を列の欠落と判断する前に、末尾の空セルを確認します。
- Notion のスキーマを確認します。 List Database Properties を別途実行します。各ソースフィールドについて、転送先プロパティ名、想定する型、空の値の扱い、該当する場合は許可された選択肢を対応表に記載します。
- 受け入れたレコードを準備します。 JSON Operations で許可されたフィールドだけを構成します。重複 ID、不明なステータス値、必須内容の欠落が現れた場合は、手作業での試行を止めます。不完全な対応付けで黙ってページを作成してはいけません。
- 各項目を作成結果の記録に対応付けます。 反復設定には、Loop の配線と順序に関する制約を参照してください。返された各ページ ID が、その作成要求に含めたソース ID に結び付いていることを確認します。ソース行と作成結果を位置で組み合わせず、ID を比較します。
- 1つのページを作成し、結果の記録を保持します。 実際の転送先スキーマに従ってプロパティオブジェクトを準備し、必要なら Type Convert で
output_type="Message"として Message に変換します。得られたテキストが有効な JSON であることを確認し、Create Page のproperties_jsonに渡します。 - ソースとページの対応を記録します。 この試行では、別の行を選ぶ前に、ソース ID、返されたページ ID、結果を確認ログに手動で保存します。このグラフには、自動で書き戻すノードは設定されていません。
型を持つプロパティを意図的に対応付ける
仮の転送で、スプレッドシートの行がタスクを T-07 と識別し、ステータスを Waiting としているとします。転送先データベースに対応するステータスの選択肢がない場合は、その行を保留して対応付けを判断します。最初の選択肢で代用したり、一見有効なステータスを持つ誤解を招くページを作成したりしてはいけません。確認担当者は、特定の転送先の選択肢を承認する、ソースを修正する、理由を記録してその行を除外する、のいずれかを選べます。同じ曖昧さが次のバッチで再発しないよう、その判断を T-07 とともに保持します。
対応表では、テキスト、数値、日付、選択肢に相当する値を区別します。空セルは「プロパティを空にする」「レコードを却下する」「承認済みの既定値を使う」のいずれも意味し得るため、明示的に決めます。転送先フィールドを埋めるためだけに、曖昧なスプレッドシートのテキストから日付を作り出してはいけません。
選択肢のプロパティでは、ソース値を転送先の許可された値と比較します。テキストのプロパティでは、意味のある改行と句読点を保持します。コンポーネントの記載は、リレーションの自動解決、添付ファイルのコピー、リッチテキストの変換を保証していません。ペイロードと動作を検証するまで、これらのフィールドは最初の転送から除外します。
再実行で意図せずページを作成しない
Create Page は作成操作であり、upsert として文書化された操作ではありません。同じ行を再び選んでも、同じタイトルなら以前のページが更新されるとは考えないでください。ソースとページの作成結果ログを使い、作成が未完了と分かっている行だけを選びます。
信頼できる作成結果が返らない場合は、行を再送信する前に、対象データベースでそのソース ID を確認します。カタログには、Create Page の冪等性パラメーターも、作成と結果ログをトランザクションで結び付ける仕組みもありません。呼び出し側が識別子を保持できなくても、ページが存在することがあります。自動で再試行せず、停止して結果を照合します。
転送を拡大する前に確認する
任意項目の空欄、無効な選択肢、先頭がゼロのソース ID、重複ソース ID を含む架空の行を準備します。提案した検証で、作成前に無効なレコードを除外できることを確認します。受け入れた1行について、転送先のプロパティ値を確認し、ページ ID を記録します。その後、2回目の作成バッチからその行を除外できることを確認します。
スプレッドシートの列を挿入したり名前を変更したりした後は、範囲の見出しを確認します。位置による対応付けを使う場合、見出しのずれを検出したら処理を止め、値を誤ったプロパティに移してはいけません。後の変更を説明できるよう、各バッチで使ったソースのスキーマを保持します。
Googleスプレッドシート→Notion転送の制約と別の方向への転送は何ですか?
この転送はカタログに記載されていますが、Ai Flowi が本番環境で検証したものではありません。双方向同期、編集内容の自動照合、完全なページネーション、ループバック動作、安全な再試行の仕組みは確立されていません。一度限りの移行に既存の手動インポートで足りる場合は、それを使います。対応付けと障害復旧を確認するまでは、無人のバッチ処理を避けます。
選択したデータベースのプロパティを逆方向へ移す場合は、Notion から Google Sheets への転送を参照してください。ページ本文のテキストを文書のスナップショットにする場合は、Notion から Google Docs への転送を使います。これらは別の成果物であり、識別情報のルールも異なります。
行ごとの作成に伴う利用量
プラン:Goは年払いで月額USD8から(月払いUSD10)、Plusは月額USD16から(月払いUSD20)、Pro 100は月額USD80から(月払いUSD100)、Pro 200は月額USD160から(月払いUSD200)、Pro 500は月額USD400から(月払いUSD500)。毎月5,000~250,000 Flowi Tokensが含まれ、追加購入も可能です。ノード実行1回につき1トークン。サードパーティのAPIとモデルの利用料金は含まれません。
ソースの読み取りや Table への変換に加え、反復内の実行も確認します。行ごとの作成ノードは、バッチ内で何度も実行される可能性があります。グラフにノードが1つ見えていても、転送全体の課金対象のノード実行が1回とは限りません。
スプレッドシート転送の参考資料
プロパティのインターフェースは、Notion リファレンスで確認します。前段の行が HTTP 受付から来る場合は、転送バッチを選ぶ前に、Webhook 受付のチュートリアルを参照してください。レシピ一覧には、他のワークフローの対象範囲が記載されています。データベースのプロパティを逆方向へエクスポートする場合は、Notion から Google Sheets への転送を使います。フィールドがアップロードされた文書の中にしかない場合は、先にDocument AI による抽出を使います。