顧問先が増えたあとに、直した所を全部のシートへ行き渡らせる方法です。2026-09-21 に設計し、2026-09-22 に作って通しました。下の設計のうち「自己申告・台帳・まとめて入れ直す道具」は動いています。
台帳から入れ直す.py。版が同じ社は飛ばす/当てる前に控え/スクリプトの親がそのブックかを照合(他社へ入れない)/シートの形も同じ版で当てる/失敗しても次の社へ進み一覧で出す| 配る物 | 中身 | 配り方 |
|---|---|---|
| スクリプト | 集計・色・保護・ボタン・エラーチェック・仕訳出力などの処理 | 各ブックの中のスクリプトを入れ替える(下の2) |
| シートの形 | 列・見出し・幅・書式・入力規則・条件付き書式・フィルタ・エラーチェックの規則の表・マスタの行 | 版番号を持ち、足りない分だけ当てる(下の4) |
この2つは別々に版を持ちます。スクリプトだけ新しくても、列が無ければ動きません。逆に列だけ足しても、読む側が古ければ使われません。どちらも版を記録して、揃っているかを見られるようにします。
| 案 | 1か所直せば全社に効くか | 確かめた事実 | 判定 |
|---|---|---|---|
| ① 各ブックに入れ直す (いまの 設置する.py を台帳の全社へ回す) |
効かない。会社の数だけ入れ直す | 入れ直しは人が押さずにできる(このセッションで何度も実行済み)。1冊あたり1〜2秒。処理は1つのプロジェクトに収まるので遅くならない | 推奨 |
| ② 共通部分をライブラリにする | 条件つき。下の4点が効く | ・簡易トリガー(onOpen・onEdit)はライブラリからは動かない(公式に明記)。開いたときのメニューと、入力のたびの処理は結局それぞれのブックに置く ・スクリプトのプロパティとキャッシュがライブラリ側で共有される(公式の表)。いまの作り(入力のたびの処理の失敗の控え・進行の窓の進みぐあい)は会社をまたいで混ざる ・版を指定して使うと、上げるときに各ブックの設定を書き換えるので、結局①と同じ回数になる。書き換えずに済む「開発中のまま使う」形は編集権限が要る ・使う人全員にライブラリの閲覧権限が要る(顧問先の担当者が触るなら、その人たちにも配る=コードが見える) ・公式に「ライブラリを使うと速度が落ちる」と明記 |
使わない |
| ③ 組織内のアドオンにする | 効く | Google Workspace のアカウントが要る(個人の gmail.com では組織内公開ができない)。いまのブックは個人アカウントの所有。仮に事務所のドメインで出しても組織内限定なので、別ドメインの顧問先は入れられない | いまは不可 |
| 調べたこと | 結果 | 設計への影響 |
|---|---|---|
| ブックの中のスクリプトを、あとから探せるか | 探せない。ドライブの一覧に出ず、ブックを親にした検索でも出ず、ブックのIDをスクリプトのIDとして引くこともできない | 複製して作った顧問先のブックは、IDを控えていないと二度と入れ直せない |
| すでにスクリプトがあるブックに、もう一度作ったらどうなるか | 2つ目ができる(元のものは返ってこない)。メニューが2つ出る状態になる | 「分からなければ作り直す」は使えない。必ず控えるしくみが要る |
| 控えたIDが、そのブックのものか確かめられるか | 確かめられる。スクリプトの情報に「どのブックの中か」が入っている | 入れ直す前に必ず照合する。他社のブックへ誤って入れることが起きない |
試し方=空のブックを作ってスクリプトを入れ、ドライブで検索し、ブックを複製して探し直し、複製先にもう一度作って中身を見た。試しのブックは消しました。
新しい顧問先のブックは、いまの決まりどおり会計管理テンプレート本体を複製して作ります。複製されたスクリプトのIDは外からは分かりませんが、そのブックの中では分かります(ScriptApp.getScriptId()。権限は要りません)。そこで:
「全部更新」は新しいブックで最初にやることなので、この形のために押す回数は増えません。
列・書式・入力規則はライブラリでは配れません。版番号と、版から版へ当てる小さな手順を持ちます。
| 決まり | 中身 |
|---|---|
| 移行は番号付きで1つずつ | 移行/001_通し番号の列.py のように、1つの直しを1つの手順にする。まとめない(失敗した所が分かるように) |
| 何度流しても同じ結果 | もう当たっていれば飛ばす。いまの「〜の列を足す.py」はすでにこの作りです |
| 当てる前に控えを取る | ブックをドライブで複製して控えのフォルダへ(サーバー側の複製なので速い)。世代を決めて古いものは消す |
| 当てたあとに器を点検する | 試験/形を変えた後の点検.py を必ず通す(フィルタの範囲・入力規則・条件付き書式・保護・帯・結合0・エラーのセル0・見出しの幅・罫線)。値の比較だけでは器のずれは1件も見つかりません |
| 1社ずつ結果を残す | 台帳の行に 版・当てた日・成否・かかった時間 を書く |
| 失敗しても次の社へ進む | 1社の失敗で止めない。最後に一覧で出す |
各ブックの設定タブに書きます。すでに「項目」「値」の形があるので、新しい入れ物は作りません。
| 項目 | 値の例 | 書く人 |
|---|---|---|
| スクリプトの版 | 2026.09.21 | 入れ直した道具 |
| シートの形の版 | 014 | 移行を当てた道具 |
| 最後に当てた日 | 2026/09/21 18:40 | 同上 |
| スクリプトのID | 1AAv… | そのブックの全部更新(自己申告) |
型のブックの中ではなく、別の管理ブックに置きます。 型のブックは顧問先へ複製される元なので、その中に他社の一覧を持つと、複製のたびに他社の情報が相手の手元へ渡ります。
| 列 | 中身 |
|---|---|
| 会社名 | 顧問先の名前 |
| 会計管理シートのURL | 本体のブック |
| 別ブックのURL | 資料を分けたブック(複数。行を分ける) |
| スクリプトのID | 自己申告で入る。空欄=まだ全部更新が押されていない |
| スクリプトの版/シートの形の版 | いまの版。いちばん新しい版と違えば色が付く |
| 最後に当てた日/成否/かかった時間 | 一括で当てた道具が書く |
| 控えの場所 | 当てる前に取った複製のURL |
いまローカルの 設定.json が持っているスクリプトのIDは、この台帳へ移します(正本は台帳・手元のファイルは控え)。手元のファイルだけに持つと、このパソコン以外から回せません。
| やること | 押す回数 | なぜ |
|---|---|---|
| スクリプトを全社へ入れ直す | 0回 | Apps Script の API で外から入れ替えられる(このセッションで実証済み) |
| シートの形を全社へ当てる | 0回 | 列・書式・入力規則・条件付き書式・フィルタは Sheets の API で外から当てられる。いまの「〜の列を足す.py」がその形です |
| 新しいブックのスクリプトのIDを控える | 0回(増えない) | そのブックで最初に押す「全部更新」のついでに書く |
| 権限の確認 | 1回(要る権限が増えたときだけ) | スクリプトが新しく使う権限が増えると、次にメニューを使う人に1度だけ確認が出る。これは仕様なので避けられません |
1〜3は顧問先が1社のいまのうちにやるほど楽です。4以降は社数が増えてから効きます。
ScriptApp.getScriptId() は権限が要らないと公式に書かれていますが、開いたときの処理(簡易トリガー)の中で動くかは試していません。上の案では権限のある「全部更新」の中で使うので、ここは問題になりません