ホーム / お役立ち記事 / Salesforce から Notion への同期で消した値が残る理由|空の値を送り全セルで照合
Knowledge
Salesforce から Notion へ同期していると、Salesforce で消した日付や数値が、Notion には前の値のまま残ることがあります。同期が空の値を送らずに項目を省き、Notion は送られない項目の値を変えないためです。原因の切り分け、見分け方、空の値の送り方、落とし穴、全セルの照合での確かめ方を、弊社が Notion Workers で作った同期での実測と、Notion・Salesforce の公開の仕様でまとめます。
Salesforce から Notion へデータを同期していると、Salesforce で消した日付や数値が、Notion には前の値のまま残ることがあります。
原因は、同期が「空」を送らず、その項目を省いて書いていることです。Notion は、送られなかった項目の値を変えません。
直し方は、Salesforce で空の項目に、空にする値を明示して送ることです。弊社が試した構成では、空の値を送ると Notion の日付・数値は空になり、本番の全セルの照合で約4万8千セルが一致しました。
この記事は、Salesforce の情報を Notion へ同期して使っている業務の担当者・情報システムの担当者に向けて書きます。
原因の切り分け、見分け方、空の値の送り方、落とし穴、直ったかの確かめ方を、弊社が Notion Workers で作った同期での実測と、Notion・Salesforce の公開の仕様で整理します。
Notion の公開の API の仕様には、ページを更新するとき、送らなかった項目は値をそのまま保つと書かれています。
出典は、Notion API リファレンスの「Page property values」の「Writing and clearing values」の節です。
同じ節は、空にする書き方も決めています。数値・日付・URL・選択肢などは null、テキスト・関連・複数選択などは空の配列を、項目を名指しして送ります。
Salesforce の API も、値を空に戻すには、空にする項目を名指しします。SOAP API の更新(update())では、空にする項目の名前を fieldsToNull という一覧に入れる、と公式の文書に書かれています。
Notion では、項目を送らないことと、空にすることは別の操作です。同期が空の項目を省いていると、Salesforce で値を消しても、Notion には消す指示が届きません。
弊社は、お客様の Salesforce の商談などを、毎日 Notion のデータベースへ同期する仕組みを、Notion Workers で作っています。
Notion Workers は、Notion が提供する、コードで Notion を拡張する仕組みで、その1つが外のシステムのデータを Notion のデータベースへ同期する機能です。
公式の説明では、Salesforce などの API からデータを取り込む用途が挙げられています。
この同期は、Salesforce で空のとき、文字・URL の項目には空の文字を、チェックの項目には外した状態を送っていたので、消した値も Notion で消えていました。数値・日付・日時の項目は、空なら項目ごと送らない作りでした。
商談の全行×全列を Salesforce と突き合わせると、Salesforce で消した日付が1つ、Notion には前の日付のまま残っていました。その行のほかの項目は、Salesforce と一致していました。
毎回全行を書き直す形にした後も、この1セルは残ったままでした。
行は書き直されていたとみられ(Salesforce で変わっていない行も書き直されることを、後で確かめました)、送られない項目は変わらない、という公開の API の仕様と同じ動きでした。
元の作りは、数値と同じく、日付も空なら項目ごと省いていました。使っていた Workers の SDK(0.4.0)の日付を作る関数は、空の文字を受け付けません。
Workers の同期の公式の手引きにも、値を空にする書き方は書かれていません(2026年11月1日に確認)。
Salesforce と Notion で値が違うときは、違い方で原因を分けます。直し方が違うので、先に分けます。
| 見え方 | 疑う原因 |
|---|---|
| 消した項目だけが前の値で、同じ行のほかの項目は新しい | 同期が空の値を送らず、項目を省いている |
| 行ごと前の値で、ほかの項目の変更も入っていない | その行が書かれていない(更新日時の条件・差分の読み取りの範囲) |
| Salesforce で消した行が Notion に残っている | 行の削除の扱い(同期の形による) |
行ごと前の値のときは、更新日時の条件を疑います。弊社が試した Notion Workers の同期では、行に更新日時(upstreamUpdatedAt)を添えて送ると、前に書いたときより新しくない行は書かれませんでした。
SDK の説明では、この更新日時は「複数の同期が同じデータベースに書くときの競合の解決に使う。推奨だが任意」とされています。書かれない条件そのものは、説明には書かれていません。
行の削除は、同期の形で扱いが変わります。公式の手引きでは、毎回全件を返す置き換えの同期(replace)は、その周で見なかった行を消し、変更だけを返す差分の同期(incremental)は、削除を明示して送る必要があります。
本番で空の値を送る前に、弊社は使い捨ての試験用の同期で、空の値が拒まれないか、同じ回のほかの行が巻き込まれないかを確かめました。
置き換えの同期では、拒まれた行が「その周で見なかった行」として消される恐れがあったためです。
| 項目 | 内容 |
|---|---|
| 実測の日 | 2026年10月6日 |
| 同期の仕組み | Notion Workers の同期(SDK 0.4.0) |
| 同期の形 | 置き換えの同期(replace)・手動で実行 |
| 試した行 | 試験用の表に7行(日付・数値・目印の文字を入れた行と、対照の行) |
7行に日付・数値・目印の文字を入れて書いた後、3回に分けて、行ごとに違う送り方で書き直しました。結果は次のとおりです。
[])を送ると、Notion で両方とも空になった。拒まれず、同じ回の対照の行も書かれた[[""]])を送っても、空になった1と2の送り方は、公式の手引きには書かれていません。弊社が試した構成(SDK 0.4.0 の試験と、SDK 0.9.2 に上げた後の本番の全行)での動きです。Notion Workers 以外の同期の道具では確かめていません。
弊社が実際に通した手順は次のとおりです。前提として、行が書き直される形にしておきます。
[] で送るように、同期のコードを直す1が無いと、直しを入れても、Salesforce で変わっていない行は書き直されず、残った値も消えません。更新日時を添えない形は、同じ表に複数の同期が書かない場合だけに使います。
弊社の同期のコードの該当の部分を、要点だけにすると次のとおりです。Salesforce の値を Notion の値に変える関数が、空のときに undefined を返す作りでした。
const CLEARABLE = new Set(["number", "date", "datetime"]);
function buildProperties(fields, record) {
const out = {};
for (const f of fields) {
const value = toValue(f.kind, record[f.soql]); // 空なら undefined
if (value !== undefined) out[f.notion] = value;
else if (CLEARABLE.has(f.kind)) out[f.notion] = []; // 省かず、空の値を送る
}
return out;
}
公開の API でページを直接更新する同期なら、仕様どおり、数値・日付は null、テキストは空の配列を、項目を名指しして送ります。弊社が実測したのは Notion Workers の同期で、公開の API の書き方は試していません。
直ったかは、Salesforce と Notion の値を全行×全列で突き合わせて判定します。弊社の同期では、消し残りは約4万8千セルのうち1つで、抜き取りの目視では見つけにくい数でした。
弊社は、同期と同じ問い合わせと変換で Salesforce を読み、Notion の表と次の順で突き合わせています。
3を別に数えるのは、空の消し忘れが、直し方の効き目を示す数だからです。弊社の同期では、直す前は1、直した後は0でした。
直した後の本番の照合では、商談の全行×全列、約4万8千セルがすべて一致しました。SDK を 0.9.2 に上げて全行へ広げた後の照合でも、空なのに値が残るセルは0でした。
試験用の同期で確かめるときは、変える行と一緒に、ふつうに書き直す対照の行を置きます。対照の行が書かれていれば、その回の同期が動いたうえでの結果だと判定できます。
同期のコードを自社で持っていて、同期する項目が少なく、照合を手で回せるなら、自力で足ります。弊社の同期では、空の値を送るための直しは、空のときの分岐の追加と、対象にする項目の型の指定でした。
自力の壁は次の3つです。
外注の分かれ目は、直しの後に、Salesforce と Notion が全セルで一致していることを確かめる手立てを、自社で持てるかです。外注するなら、見積もりを比べる前に次の3点を確かめてください。
ゴムマリでは、Salesforce と Notion などのシステムをつなぐ同期の設計・構築・受け入れの照合(件数・値の一致)・保守を、システム連携・API 開発として承ります。
料金は、連携1本(接続先2つ・片方向・定期の更新)で初期50万円から、保守は月3万円から、期間は2週間からです。
Salesforce の項目・画面・権限の直しや重複したデータの整理とあわせて頼む場合は、CRM の開発・改修(Salesforce 対応)で、検証環境(Sandbox)での設定と検証からお引き受けします。
料金は初期30万円から、月5万円から、期間は2週間からです。
進め方は相談からご連絡ください。
Notion で頼めることの全体は、Notion の構築と開発にまとめています。
Salesforce で値が空の日付・数値の項目を1つ選び、同じ行の Notion の値を見てください。同期が回った後も Notion に値が入っていれば、空の値が送られていないか、その行が書かれていません。
どちらかは、見分け方の表で分けます。そのうえで、同じ型の項目すべてで、Salesforce は空なのに Notion に値が残るセルを数えます。直した後に0になったかで、効き目を判定できます。
Notion のデータベースで、AI の自動入力が人の直した値を書き換える動きは、Notion AI の自動入力が直した値を上書きする理由にまとめています。
関連記事: Notion AI の自動入力が直した値を上書きする理由/Notion API が 429 で止まる理由/Salesforce と Notion をつなぐ方式の選び方
ワークスアプリケーションズで大手企業向けERPの営業と導入を担当し、外資系SaaS企業と国内大手放送局で販路と新規事業の立ち上げ、AI学習用データを扱うAIスタートアップ2社でマーケティングと営業を担った。2024年10月から生成AIの実装に入り、いまは大手企業の現場で、AIエージェントを要件定義から運用まで手がけている。
Ask
業種・規模を問わず
システム連携・API 開発
SAP® ソフトウェアや基幹システム、intra-mart、SharePoint などのデータを、Notion や CRM などほかのシステムへつなぎます。
初期 50万円〜(2週間〜)
Related
Excel の台帳を Notion へ移すには、表の形とキーを決め、型を決めてリレーションと一緒に取り込み、数式と集計を作り直してから、件数・キー・値・先頭のゼロ・空の値・リレーション・計算の結果の7つで照合します。Notion の公式ヘルプと API の文書の決まりと、弊社が管理表の約2千明細を移し、Notion で計算した残が移したすべてのロットで元の表と一致した照合の手順でまとめます。
活用ガイドNotion AI に書類を作らせて照合するときは、手順を Notion AI への指示書、読めば決まる処理を添付のコード、1回ごとの結果を記録のデータベースに分けます。弊社の導入の事例の試作では、同じ題材で、文章の指示は発注番号を3回のうち2回誤り、添付のコードは2回とも誤りませんでした。分け方の問い、進める手順、誤りを仕込む照合の進め方を、弊社の記録でまとめます。
FAQ
Notion の公開の API の仕様では、更新で送らなかった項目は値がそのまま残ります。空にするには、数値・日付・URL・選択肢などは null を、テキスト・関連・複数選択などは空の配列を、項目を名指しして送ります。送らないことと、空にすることは別の操作です。
同期が、空の項目を省いて送っていると、行の書き込みは成功しても、その項目は前の値のまま残ります。弊社の同期では、空の数値・日付を送らない作りで、毎回全行を書き直す形にした後も、消した日付が前の値のまま残っていました。
別の原因を疑います。弊社が試した Notion Workers の同期では、更新日時(upstreamUpdatedAt)を添えて送ると、前に書いたときより新しくない行は書かれませんでした。差分の同期なら、その行が読み取りの範囲に入っているかも確かめます。
弊社の直しは、数値・日付・日時の項目が対象で、選択肢と関連の項目を空にした場合は確かめていません。公開の API の仕様では、選択肢は null、関連は空の配列で消します。直したら、全セルの照合で残っていないかを確かめてください。
弊社の同期では確かめられませんでした。同期が書いた行の最終編集日時は、値が変わってもほとんど動きませんでした。直ったかは、Salesforce と Notion の値を全セルで突き合わせて判定します。