会計管理シートの版を上げる(設計)

顧問先が増えたあとに、直した所を全部のシートへ行き渡らせる方法です。2026-09-21 に設計し、2026-09-22 に作って通しました。下の設計のうち「自己申告・台帳・まとめて入れ直す道具」は動いています。

できたもの(2026-09-22)

1. 配る物は2つあり、やり方が違う

配る物中身配り方
スクリプト集計・色・保護・ボタン・エラーチェック・仕訳出力などの処理各ブックの中のスクリプトを入れ替える(下の2)
シートの形列・見出し・幅・書式・入力規則・条件付き書式・フィルタ・エラーチェックの規則の表・マスタの行版番号を持ち、足りない分だけ当てる(下の4)

この2つは別々に版を持ちます。スクリプトだけ新しくても、列が無ければ動きません。逆に列だけ足しても、読む側が古ければ使われません。どちらも版を記録して、揃っているかを見られるようにします。

2. スクリプトの配り方(3案を比べた)

1か所直せば全社に効くか確かめた事実判定
① 各ブックに入れ直す
(いまの 設置する.py を台帳の全社へ回す)
効かない。会社の数だけ入れ直す 入れ直しは人が押さずにできる(このセッションで何度も実行済み)。1冊あたり1〜2秒。処理は1つのプロジェクトに収まるので遅くならない 推奨
② 共通部分をライブラリにする 条件つき。下の4点が効く 簡易トリガー(onOpen・onEdit)はライブラリからは動かない(公式に明記)。開いたときのメニューと、入力のたびの処理は結局それぞれのブックに置く
スクリプトのプロパティとキャッシュがライブラリ側で共有される(公式の表)。いまの作り(入力のたびの処理の失敗の控え・進行の窓の進みぐあい)は会社をまたいで混ざる
・版を指定して使うと、上げるときに各ブックの設定を書き換えるので、結局①と同じ回数になる。書き換えずに済む「開発中のまま使う」形は編集権限が要る
・使う人全員にライブラリの閲覧権限が要る(顧問先の担当者が触るなら、その人たちにも配る=コードが見える)
・公式に「ライブラリを使うと速度が落ちる」と明記
使わない
③ 組織内のアドオンにする 効く Google Workspace のアカウントが要る(個人の gmail.com では組織内公開ができない)。いまのブックは個人アカウントの所有。仮に事務所のドメインで出しても組織内限定なので、別ドメインの顧問先は入れられない いまは不可
推奨は①。 全社へ入れ直す形にしても、人が押す必要はありません(下の8)。②は「1か所直せば効く」ように見えて、いまの作りでは会社をまたいで値が混ざるので、先に作り替えが要ります。

3. 実際に試して分かったこと(ここが設計の肝)

調べたこと結果設計への影響
ブックの中のスクリプトを、あとから探せるか探せない。ドライブの一覧に出ず、ブックを親にした検索でも出ず、ブックのIDをスクリプトのIDとして引くこともできない複製して作った顧問先のブックは、IDを控えていないと二度と入れ直せない
すでにスクリプトがあるブックに、もう一度作ったらどうなるか2つ目ができる(元のものは返ってこない)。メニューが2つ出る状態になる「分からなければ作り直す」は使えない。必ず控えるしくみが要る
控えたIDが、そのブックのものか確かめられるか確かめられる。スクリプトの情報に「どのブックの中か」が入っている入れ直す前に必ず照合する。他社のブックへ誤って入れることが起きない

試し方=空のブックを作ってスクリプトを入れ、ドライブで検索し、ブックを複製して探し直し、複製先にもう一度作って中身を見た。試しのブックは消しました。

そこで「自己申告」にします

新しい顧問先のブックは、いまの決まりどおり会計管理テンプレート本体を複製して作ります。複製されたスクリプトのIDは外からは分かりませんが、そのブックの中では分かりますScriptApp.getScriptId()。権限は要りません)。そこで:

  1. 新しいブックで最初の「全部更新」を押したときに、スクリプトが自分のIDと、いまの版を設定タブへ書く
  2. 台帳の道具がそれを読んで控える。以後は人が押さなくても入れ直せる
  3. 入れ直す前に「そのIDの親が、このブックか」を必ず照合する。違えば止めて知らせる(複製で紛れ込んだ他社のIDを弾く)

「全部更新」は新しいブックで最初にやることなので、この形のために押す回数は増えません

4. シートの形の配り方(版番号と移行)

列・書式・入力規則はライブラリでは配れません。版番号と、版から版へ当てる小さな手順を持ちます。

決まり中身
移行は番号付きで1つずつ移行/001_通し番号の列.py のように、1つの直しを1つの手順にする。まとめない(失敗した所が分かるように)
何度流しても同じ結果もう当たっていれば飛ばす。いまの「〜の列を足す.py」はすでにこの作りです
当てる前に控えを取るブックをドライブで複製して控えのフォルダへ(サーバー側の複製なので速い)。世代を決めて古いものは消す
当てたあとに器を点検する試験/形を変えた後の点検.py を必ず通す(フィルタの範囲・入力規則・条件付き書式・保護・帯・結合0・エラーのセル0・見出しの幅・罫線)。値の比較だけでは器のずれは1件も見つかりません
1社ずつ結果を残す台帳の行に 版・当てた日・成否・かかった時間 を書く
失敗しても次の社へ進む1社の失敗で止めない。最後に一覧で出す

5. 版をどこに書くか

各ブックの設定タブに書きます。すでに「項目」「値」の形があるので、新しい入れ物は作りません

項目値の例書く人
スクリプトの版2026.09.21入れ直した道具
シートの形の版014移行を当てた道具
最後に当てた日2026/09/21 18:40同上
スクリプトのID1AAv…そのブックの全部更新(自己申告)

6. 台帳(顧問先のブックの一覧)

型のブックの中ではなく、別の管理ブックに置きます。 型のブックは顧問先へ複製される元なので、その中に他社の一覧を持つと、複製のたびに他社の情報が相手の手元へ渡ります。

中身
会社名顧問先の名前
会計管理シートのURL本体のブック
別ブックのURL資料を分けたブック(複数。行を分ける)
スクリプトのID自己申告で入る。空欄=まだ全部更新が押されていない
スクリプトの版/シートの形の版いまの版。いちばん新しい版と違えば色が付く
最後に当てた日/成否/かかった時間一括で当てた道具が書く
控えの場所当てる前に取った複製のURL

いまローカルの 設定.json が持っているスクリプトのIDは、この台帳へ移します(正本は台帳・手元のファイルは控え)。手元のファイルだけに持つと、このパソコン以外から回せません。

7. 一括で当てる道具(満たすこと)

  1. 何度流しても同じ結果。もう当たっている社は飛ばす
  2. 当てる前に控えを取る。控えのURLを台帳に書く
  3. 1社ずつ結果が残る。会社・版・成否・かかった時間の一覧を出す
  4. 失敗しても次の社へ進む。最後に失敗した社だけをもう一度流せる
  5. 下見ができる。何をどの社に当てるかを、当てずに出せる
  6. 入れ直す前にスクリプトの親を照合する(他社のブックへ入れない)

8. 人が押す回数

やること押す回数なぜ
スクリプトを全社へ入れ直す0回Apps Script の API で外から入れ替えられる(このセッションで実証済み)
シートの形を全社へ当てる0回列・書式・入力規則・条件付き書式・フィルタは Sheets の API で外から当てられる。いまの「〜の列を足す.py」がその形です
新しいブックのスクリプトのIDを控える0回(増えない)そのブックで最初に押す「全部更新」のついでに書く
権限の確認1回(要る権限が増えたときだけ)スクリプトが新しく使う権限が増えると、次にメニューを使う人に1度だけ確認が出る。これは仕様なので避けられません
ふだんは押す所がありません。 版を上げる作業は、こちらで道具を流すだけで終わります。

9. 作る順番

  1. 版の置き場所を決めて、いまの2冊(本体・型)の設定タブに版を書く
  2. 台帳のブックを作る(6の列)。いまの 設定.json の中身を移す
  3. 全部更新のときに、スクリプトのIDと版を設定タブへ書く(自己申告)
  4. スクリプトを台帳の全社へ入れ直す道具(親の照合・控え・一覧)
  5. 移行のしくみ(番号付き・何度でも・控え・器の点検・一覧)
  6. 台帳に「いちばん新しい版と違う社」を出す(版の食い違いが目で分かるように)

1〜3は顧問先が1社のいまのうちにやるほど楽です。4以降は社数が増えてから効きます。

10. 確かめていないこと