<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GAS・スプレッドシート &#8211; まったりエンジニア</title>
	<atom:link href="https://javeo.jp/category/gas/feed/" rel="self" type="application/rss+xml" />
	<link>https://javeo.jp</link>
	<description>ほどほどレベルのプログラミング</description>
	<lastBuildDate>Fri, 25 Sep 2026 14:28:23 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2-32x32.png</url>
	<title>GAS・スプレッドシート &#8211; まったりエンジニア</title>
	<link>https://javeo.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートの台帳を共有しても壊されない入力フォーム</title>
		<link>https://javeo.jp/spreadsheet-ledger-input-form/</link>
					<comments>https://javeo.jp/spreadsheet-ledger-input-form/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Fri, 25 Sep 2026 14:22:06 +0000</pubDate>
				<category><![CDATA[GAS・スプレッドシート]]></category>
		<category><![CDATA[初心者]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=5441</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/09/spreadsheet-ledger-input-form-1024x538.png" class="webfeedsFeaturedVisual" /></p>共有したスプレッドシートの台帳が、行の削除・計算式の上書き・表記ゆれで崩れていく問題を、台帳の手前に入力フォームを置いて防いだ見本の紹介です シートの保護やGoogleフォームで足りなかった理由、誤入力を3段階で防ぐ仕組み、導入前に知っておきたい制約までまとめました]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/09/spreadsheet-ledger-input-form-1024x538.png" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">スプレッドシートの台帳を共有して入力を頼んだら、行が消えていた・計算式が壊れていた・思った入力と違うことになっていた、という経験はありませんか？</p>



<p class="wp-block-paragraph">スプレッドシートを直接入力すると付きまとう問題ですが、専用の<strong>入力フォーム</strong>を作ることで入力補助もできるし、こちらの意図した入力へ制限することもできます</p>



<p class="wp-block-paragraph">入力フォームはGASで作成するので自由度高く対応でき、既存のスプレッドシートとも連携が可能です</p>



<p class="wp-block-paragraph">今回は車両管理をサンプルとしていますが、せどり商品調査など入力を外注している場合なども有効なので、参考にするか下記のココナラ経由で私に発注してもらえると嬉しいです</p>



<a class="coconala-widget" href="https://coconala.com/services/4400458" data-service_id="4400458" data-width="468" data-comment="0" data-invite="1" data-user_id="864045">スプシ台帳に専用の入力画面をGASで作ります 入力ミス・二重入力を、専用の入力画面で減らします</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://coconala.com/js/coconala_widget.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','coconala-wjs');</script>



<h2 class="wp-block-heading">共有したスプレッドシートが壊れる3つの理由</h2>



<p class="wp-block-paragraph">原因は、<strong>台帳を直接更新している</strong>という当然の理由に行き着きます</p>



<p class="wp-block-paragraph">入力を頼んだ時点で、台帳のどのセルでも書き換えられる状態を渡しているのと同じこと<br>そこから起きる崩れ方は、だいたい次の3つに分かれます</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><strong>行や計算式を壊される</strong>:並べ替えの拍子に行がずれる・合計の列に数字を直接打たれる・フィルタをかけたまま行を消される</li>



<li><strong>表記がばらつく</strong>:「(株)山田運輸」「山田運輸株式会社」「ヤマダ運輸」が並び、集計やフィルタで同じ会社として拾えなくなる</li>



<li><strong>同じ情報を何度も入力する</strong>:台帳に入れた内容を請求用のシートにもう一度打ち、ドライバーへの連絡メールも手で書き直す</li>
</ul>



<p class="wp-block-paragraph">3つともスプレッドシートの自由度が高すぎるがゆえの問題で、どんなに手順を示したり注意を促したとしてもヒューマンエラーを防ぐことも、万人に伝わる手順を作ることも難しいところ</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ジャベ雄</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>「気をつけて入力してください」と書いておいても、完璧に制御することはできないと思います</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">シートの保護・権限・Googleフォームで足りないところ</h2>



<p class="wp-block-paragraph">どれも片方は防げますが、<strong>入力はしてもらう・シートは直接触らせない</strong>の2つを同時には満たせないのが共通の弱点</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>手段</th><th>防げること</th><th>足りないところ</th></tr></thead><tbody><tr><td>シートの保護(警告のみ)</td><td>うっかりの編集に確認を出す</td><td>確認を押せば編集できるので、誤操作は防げても誤認までは防げない</td></tr><tr><td>データの入力規則(プルダウン)</td><td>決めた値以外の入力</td><td>コピーや貼り付けで規則ごと上書きされることがある / 編集できる人なら規則そのものを外せる</td></tr><tr><td>Googleフォーム</td><td>台帳を直接触らせない</td><td>新規登録にしか使えない / マスタとの連動・自動入力・採番は標準の設定だけでは作れない</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">シートを保護すると、サイドバーからの登録もブロックしてしまう</h3>



<p class="wp-block-paragraph">最初は、スプレッドシートの右側に入力画面(サイドバー)を出して、そこから台帳へ登録する作りにする予定でした<br>これはこれで一定の効果はあるのですが、サイドバーは<strong>操作している本人の権限で台帳に書き込む</strong>ので、入力者が編集できないように台帳を保護すると、入力者の側ではサイドバーからの登録もできなくなります</p>



<p class="wp-block-paragraph">つまりシート保護ができないので誤操作でデータを削除したりシートを壊してしまう可能性は残ってしまいます</p>



<p class="wp-block-paragraph">保護そのものについても、<a href="https://support.google.com/docs/answer/1218656?hl=ja" target="_blank" rel="noopener noreferrer">Googleのヘルプ(範囲やシートの保護)</a>は<strong><span class="swl-marker mark_yellow">セキュリティ対策ではない</span></strong>と明記していて、非表示にしたシートの中身も閲覧者は見られると書かれています<br>マスタを非表示のシートに隠しておけば見られない、とはいかないので、ここはちょっと注意が要るところかもしれません</p>



<h3 class="wp-block-heading">Googleフォームはマスタ連動できないし、台帳更新には向いていない</h3>



<p class="wp-block-paragraph">Googleフォームなら入力者に台帳を触らせずに済むので、思い浮かぶ手の一つだと思います<br>フォームにも「回答の編集を許可する」設定があって、回答した本人があとから自分の回答を直すことはできます</p>



<p class="wp-block-paragraph">でも、この手の台帳運用では「管理番号○○の納車先を直したい」のような、<strong><span class="swl-marker mark_yellow">台帳の任意の行を探して修正する</span></strong>パターンもあります<br>フォームは自分の回答を送る・直すための機能なので、他の人が入れた行や管理者が作った行を呼び出して直す使い方には向きません</p>



<p class="wp-block-paragraph">ほかにも、顧客を選んだらその顧客のいつもの引取先が別の欄に入る・案件番号を連番で振る、といった動きは標準の設定だけでは作れません<br>回答に応じて次のセクションへ進ませる分岐はあっても値を埋めてはくれないので、そこまでやるなら結局GASの出番</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ジャベ雄</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>フォームは「送る」には強いけど、「探して直す」は苦手です</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">専用の入力フォームを共有してシート自体は共有しない</h2>



<p class="wp-block-paragraph">やったことは、台帳とは別のURLで開く入力フォームを用意して、<strong><span style="color:#e8313b" class="swl-marker mark_yellow">入力する人にはスプレッドシート編集権限を付与しない</span></strong>、この1点です</p>



<p class="wp-block-paragraph">入力者はシートを操作できないので、行を消す・計算式を上書きする、という事故が起きる場所がそもそも無くなります</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26-1024x537.png" alt="ウェブアプリの入力画面(新規登録タブ・PC幅)と、画面上部のGoogleの注意書き" class="wp-image-5449" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-24_17h21_26.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">書き込みは「公開した本人として実行」で管理者の権限にする</h3>



<p class="wp-block-paragraph">入力フォームは、GASの<strong>ウェブアプリ</strong>という仕組みで作っています<br>スクリプトをURLで開ける画面として公開する機能で、公開するときに誰の権限で動かすかを「公開した本人」か「アクセスした人」から選べるのがポイントです</p>



<p class="wp-block-paragraph">ここを<strong><span class="swl-marker mark_yellow">公開した本人(管理者)として実行</span></strong>にすることでフォームから管理者の権限で台帳への書き込みができます<br>だから入力者に台帳の編集権限は要らず、台帳のシートを保護しても書き込みは可能です<br>ただしこれは、公開した人がスプレッドシートのオーナー(または保護の設定で編集できる人に入れた人)である前提の話<br>サイドバーで問題となっていた保護での入力制御は、この切り替えで対応できました</p>



<p class="wp-block-paragraph">設定ファイル(appsscript.json)で書くと、この部分</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-lang="JSON"><code>&quot;webapp&quot;: {
  &quot;executeAs&quot;: &quot;USER_DEPLOYING&quot;,
  &quot;access&quot;: &quot;ANYONE&quot;
}</code></pre></div>



<p class="wp-block-paragraph"><strong>executeAs</strong> が誰として動かすか、<strong>access</strong> が誰がこのURLを開けるかの設定<br>USER_DEPLOYINGは「公開した本人として実行」、ANYONEは「Googleアカウントでログインしている人なら誰でも開ける」という意味</p>



<h3 class="wp-block-heading">URLを知っている人は誰でも書き込める</h3>



<p class="wp-block-paragraph">入力者はGoogleアカウントでログインしていれば、URLを開くだけで入力できます<br>裏を返すと、<strong><span style="color:#e8313b" class="swl-marker mark_yellow">URLを知っていれば、Googleアカウントを持つ誰でも台帳に書き込める</span></strong>ということ<br>なのでユーザー認証機能や履歴を残す仕様が望ましいです</p>



<p class="wp-block-paragraph">もうひとつ、入力フォームの編集・削除タブからは、<strong>削除済みを除く全案件を呼び出して上書き・論理削除もできます</strong><br>GASで作成するのでこの辺りをうまく制御してあげることでシートが壊れないような仕様にできます</p>



<p class="wp-block-paragraph">各マスタについては、専用シートの値を入力画面に渡すので管理者なら選択項目を追加・削除することも簡単です</p>



<h3 class="wp-block-heading">スマホからも入力でき、管理者はサイドバーを使う</h3>



<p class="wp-block-paragraph">入力フォームはスマホのブラウザでも同じ画面で開けて、画面の幅に合わせて表示が切り替わります<br>車を引き取った直後にその場で入力できるのは、外で動く仕事だと特にありがたいところだと思います</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new.png"><img decoding="async" width="499" height="1024" src="https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-499x1024.png" alt="スマホ幅で表示した入力画面" class="wp-image-5452" srcset="https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-499x1024.png 499w, https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-73x150.png 73w, https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-146x300.png 146w, https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-768x1575.png 768w, https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new-749x1536.png 749w, https://javeo.jp/wp-content/uploads/2026/09/02_mobile_new.png 780w" sizes="(max-width: 499px) 100vw, 499px" /></a></figure>



<p class="wp-block-paragraph">管理者のほうは、スプレッドシートを開いたまま右側に同じ入力画面(サイドバー)を出して使えます<br>スプレッドシートのオーナーは保護した範囲でも編集できるので、管理者がサイドバーから登録するぶんには保護に引っかかりません<br>台帳を見ながら入力したい管理者には、こちらのほうが使いやすいでしょう</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/11_sidebar.png"><img decoding="async" width="1024" height="486" src="https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-1024x486.png" alt="スプレッドシート上で開いた管理者用サイドバー(左に台帳・右にサイドバー)" class="wp-image-5447" srcset="https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-1024x486.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-150x71.png 150w, https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-300x142.png 300w, https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-767x364.png 767w, https://javeo.jp/wp-content/uploads/2026/09/11_sidebar-1536x729.png 1536w, https://javeo.jp/wp-content/uploads/2026/09/11_sidebar.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ジャベ雄</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>入力者はURL、管理者はサイドバーの使い分けでより便利になります</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">誤入力を3段階で防ぐ 選ぶ・候補から選ぶ・フリー入力</h2>



<p class="wp-block-paragraph">表記ゆれと入力ミスは、<strong><span class="swl-marker mark_yellow">項目ごとに入力のしかたを3段階で変える</span></strong>ことで防いでいます</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>入力のしかた</th><th>見本での項目</th><th>効き方</th></tr></thead><tbody><tr><td>マスタから選ぶだけ</td><td>顧客名 / ドライバー</td><td>表記ゆれが起きず制限できる</td></tr><tr><td>候補付きの自由入力</td><td>車種 / 引取先 / 納車先</td><td>よく使う値は選ぶだけ、初めての値も入れられる</td></tr><tr><td>自由入力</td><td>車番 / 時間条件 / 料金</td><td>料金だけ、数字以外を登録前に止める</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これとは別に、登録の前に<strong>必須の4項目</strong>(顧客名か新規顧客名・車種・引取先・納車先)の入れ忘れをチェックしています<br>分け方の基準は、値の種類が決まっていて増えにくいものは選ぶだけ、増えるけど同じ値を繰り返し使うものは候補付き、毎回違うものは自由入力<br>全部をプルダウンにすると初めての値が入れられず、全部を自由入力にすると表記がばらつくので、その間を取っています</p>



<h3 class="wp-block-heading">マスタから選ぶだけ(顧客名・ドライバー)</h3>



<p class="wp-block-paragraph">顧客名とドライバーは、マスタのシートにある値から選ぶだけで、手入力させません<br>「(株)山田運輸」と「株式会社山田運輸」のように同じ会社なのに表記が異なる入力を防げます</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27-1024x537.png" alt="顧客マスタと候補リストのシート" class="wp-image-5473" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h00_27.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">顧客を選ぶと、その顧客のいつもの引取先・納車先が自動で入ります<br>手で上書きもできるので、今回だけ別の場所から引き取る、という案件にも対応できます</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35-1024x537.png" alt="顧客名を選んで、引取先・納車先が自動で入った入力画面" class="wp-image-5474" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h01_35.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">マスタに無い新しい顧客は、プルダウンの末尾にある「＋ 新規顧客を追加」を選ぶと、その場で顧客名と担当者を入れる欄が開きます<br>登録と同時に顧客マスタへ追加されるので、マスタに無い場合のイレギュラーにも対応できます<br>制御の抜け道にもなるので、管理者がときどきマスタを見直して表記をそろえる、みたいな感じの運用が前提<br>マスタ自体はスプレッドシートのただのシートなので、管理者が行を足したり直したりすれば、次に開いたときの選択肢に反映します</p>



<h3 class="wp-block-heading">候補付きの自由入力(車種・引取先・納車先)</h3>



<p class="wp-block-paragraph">車種や引取先は候補が多く、新しい値もどんどん増えるので、プルダウンから選ぶだけでは逆に大変に<br>そこで、入力欄に文字を打つと候補が出て、候補に無い値もそのまま入れられる<strong>候補付きの自由入力</strong>にしました</p>



<p class="wp-block-paragraph">候補の元は、候補リストのシートと、台帳に過去に入った値を合わせて重複を除いたもの<br>一度入れた引取先は次から候補に出てくるので、2回目以降は選ぶだけで済むのがやっぱり楽なところ</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51-1024x537.png" alt="引取先の欄に文字を打って、候補の一覧が開いた状態" class="wp-image-5455" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h14_51.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">候補を出しているのはブラウザの<strong>datalist</strong>という機能で、Chrome・Edge・PC版のSafariでは候補が出ます<br>AndroidのFirefoxは非対応とされていて、候補が出ずにただの自由入力として動きます<br>iPhoneのSafariとPC版のFirefoxは一部対応で、挙動がほかと違うことがあります<br>候補が出なくても入力そのものはできるので、環境による差で困りにくいのもこの方式を選んだ理由のひとつ</p>



<h3 class="wp-block-heading">自由入力と登録前のチェック(車番・時間条件・料金)</h3>



<p class="wp-block-paragraph">車番・時間条件・料金は毎回違う値なので、そのまま打つ自由入力にしています<br>そのかわり登録ボタンを押した時点でチェックをかけ、<strong>必須の4項目</strong>(顧客名か新規顧客名・車種・引取先・納車先)が空なら、赤字の警告を出して登録エラーを出します</p>



<p class="wp-block-paragraph">料金は数字以外が入っていたら止めますが、空欄ならOK<br>車番と時間条件にはなにもチェックをかけていないので、書き方をそろえたいなら入力者への説明で補う程度</p>



<p class="wp-block-paragraph">チェックは画面の側と、台帳に書き込む直前のスクリプトの側の2か所でかけています<br>画面のチェックは入力者の手戻りを減らすため、スクリプト側のチェックは台帳を守る最終チェック、という分担</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09-1024x537.png" alt="必須項目が空のまま登録して、赤字の警告が出た状態" class="wp-image-5456" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h15_09.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">台帳の側で守ること 採番・論理削除・上書き防止</h2>



<p class="wp-block-paragraph">入口を分けたうえで、台帳そのものも<strong>管理番号採番・削除・同時編集</strong>の3つでデータが壊れないように工夫しています</p>



<h3 class="wp-block-heading">管理番号は登録ボタンを押した時点で振る</h3>



<p class="wp-block-paragraph">管理番号(R-0001のような連番)は、入力画面に仮の番号を出さず、登録ボタンを押した時点で確定させます<br>最初は画面を開いたときに次の番号を表示していたんですが、そのあいだに誰かが登録すると画面の番号と確定した番号がバッティングするので仕様を変えました</p>



<p class="wp-block-paragraph">番号を振る処理は、確定する時に1人ずつ順番に処理する仕組み(ロック)の中で現在の最大値+1を取るので、複数人が同時に登録しても番号は重複しません</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14-1024x537.png" alt="登録完了メッセージと確定した管理番号" class="wp-image-5457" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_14.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">削除処理してもデータは消さない(論理削除)</h3>



<p class="wp-block-paragraph">編集・削除のタブで管理番号を選ぶと、その案件の内容が呼び出されて、直して保存できます<br>削除は行を消さずに、削除フラグの列にチェックを入れて行に取り消し線を引く<strong>論理削除</strong>にしました<br>フォームから削除する限り行は残るので、番号が欠けたり同じ番号を使い回したりする心配はありません<br>管理者はシートで行ごと削除できますが、番号の欠番や振り直しが起きるので、削除はフォームから行うのが前提です</p>



<p class="wp-block-paragraph">登録日時と更新日時も、台帳の列に自動で入ります</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58-1024x537.png" alt="編集・削除タブで管理番号を選び、案件の内容を読み込んだ状態" class="wp-image-5458" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h16_58.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18-1024x537.png" alt="登録日時・更新日時・削除フラグの列と、取り消し線の付いた削除済みの行がある台帳シート" class="wp-image-5459" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_16h17_18.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">同時編集で後から保存した人を止める</h3>



<p class="wp-block-paragraph">2人が同じ案件を開いて別々に直すと、後から保存した人の内容で全項目上書きしてしまいます<br>そこで<strong><span class="swl-marker mark_yellow">更新日時を版の目印</span></strong>にして、開いたときと保存するときで更新日時が変わっていたら、書き込まずに「他の人が変更しています」と知らせる作りにしました<br>画面には「最新の内容を読み込む」ボタンが出るので、読み直してから再度修正すればOK</p>



<p class="wp-block-paragraph">管理者がスプレッドシートでセルの値を手で直した場合も、onEditを使ってその行の更新日時を上書きします<br>上書きされるのはセルの値を直したときだけで、行の削除や並べ替えでは変わりません</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34-1024x537.png" alt="同時編集の衝突メッセージ「他の人が変更しています」と「最新の内容を読み込む」ボタン" class="wp-image-5475" srcset="https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34-300x157.png 300w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34-767x402.png 767w, https://javeo.jp/wp-content/uploads/2026/09/2026-09-25_21h27_34.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">見出し名で読み書きするので、列の並びは今のままでいい</h3>



<p class="wp-block-paragraph">台帳の列は位置ではなく<strong><span class="swl-marker mark_yellow">見出しの名前で探して読み書き</span></strong>しています<br>列の並びを変えなくていいので、現場が慣れたレイアウトや計算式をそのまま残せるのが、この作りのいちばんの狙い</p>



<p class="wp-block-paragraph">その代わり、<strong>見出しの名前は見本と一字一句そろえる</strong>必要があります<br>名前が違うと、同じ名前の空の列が末尾に黙って足され、そちらに書き込まれてしまうからです<br>「更新日時」「削除フラグ」は足りなければ自動で末尾に足され、管理番号は「R-」+連番の形が前提<br>なので導入するときは、今の台帳の見出しを合わせる調整がちょっと要ります</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ジャベ雄</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>作り直さずに、見出しを合わせて列を足すだけで済むのが使い勝手では大事だと思います</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">導入前に知っておきたい4つの制約</h2>



<p class="wp-block-paragraph">入口を分けた代わりに、<strong>ウェブアプリならではの制約</strong>が4つあります</p>



<ol style="background-color:#f3fafe80" class="wp-block-list -list-under-dashed has-background">
<li><strong>画面の上部にGoogleの注意書きが出る</strong>:個人のGoogleアカウントで公開すると、入力フォームの上に、Googleが作ったものではない旨の注意書きが表示されます(キャプチャ①の上部)<br>Google Workspaceの組織内だけで使えば出ないという情報もありますが、社外のアカウントから開くと出るという説明もあるので、出るものとして入力者に一言伝えておくのがおすすめ</li>



<li><strong>入力した人のメールアドレスが取れない</strong>:公開した本人として動かす以上、アクセスした人のメールアドレスは基本的に取れません<br>Google Workspaceの同じ組織内なら一般に取れるとされていますが、個人アカウント同士なら、担当者名を選ぶ欄で代わりにするのが現実的</li>



<li><strong>画面を直したら再デプロイ(公開し直し)が必要</strong>:公開中の入力フォームは、公開した時点のコードで固定されています<br>直したあとは新しいバージョンを作って既存のデプロイを編集すると、URLを変えずに更新できます<br>デプロイを新しく作ってしまうと入力者に配ったURLのほうは古い版のまま動き続けるので、ここは気をつけたいところ<br>テスト用のURL(末尾が /dev)は編集権限のある人しか開けないので、入力者に渡すのは公開用のURL</li>



<li><strong>開きっぱなしの画面にはマスタの変更が反映しない</strong>:入力フォームは開いたときにマスタを読み込むので、管理者がマスタを直しても、再読み込みするまで選択肢は古いまま<br>朝開いて夕方まで開きっぱなし、という使い方だと気づきにくいかもしれません</li>
</ol>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ジャベ雄</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>注意書きを見て手が止まる人もいるので、URLを渡すときに一言添えておくと親切です</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">共有したスプレッドシートの台帳が壊れるのは、入力と保管が同じ場所にあるから<br>入口を入力フォームに分けて書き込みを管理者の権限で行えば、入力者に台帳を共有しなくて済みます</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>入力者にはURLだけを渡し、スプレッドシートは共有しない</li>



<li>ウェブアプリを「公開した本人として実行」にして、書き込みは管理者の権限で行う</li>



<li>項目ごとに、選ぶ・候補から選ぶ・自由入力の3段階に分け、必須項目と料金は登録前にチェックする</li>



<li>台帳の側は、採番・論理削除・同時編集の上書き防止で崩れないようにする</li>



<li>見出し名で読み書きするので、列の並びは今のまま、見出しの名前を合わせて列を足せば導入できる</li>
</ul>



<p class="wp-block-paragraph">題材は回送の案件台帳でしたが、顧客台帳や受注台帳・在庫台帳でも、入力をアルバイトさんや委託先に頼んでいるなら同じ形が使えるはず<br>もっと大きな仕組みを入れる前に、今のスプレッドシートを活かしたまま入口だけ変える、という選択肢もあっていいと思います</p>



<h2 class="wp-block-heading">サンプルで使ったスプレッドシートと入力フォーム</h2>



<p class="wp-block-paragraph">記事の中でキャプチャを貼っているスプレッドシートと入力フォームへのリンクを置いておきます</p>



<p class="wp-block-paragraph">実際にどんな動きになっているか気になる人は適当に触ってもらってOKです</p>



<p class="wp-block-paragraph">※別タブで開くリンクは下部へ</p>



<div style="width:100%;height:320px;border:1px solid #dde1e6;border-radius:8px;overflow:hidden"><iframe src="https://docs.google.com/spreadsheets/d/1mHHlXiAej8VPcurq4WHGsfVDfAjUK60Kv0MdCWXV86I/preview" title="回送台帳サンプル(閲覧専用)" loading="lazy" style="width:100%;height:100%;border:0"></iframe></div>



<p class="wp-block-paragraph"><a href="https://docs.google.com/spreadsheets/d/1mHHlXiAej8VPcurq4WHGsfVDfAjUK60Kv0MdCWXV86I/edit?usp=sharing" target="_blank" rel="noopener noreferrer nofollow">スプレッドシートを別タブで開く</a>(閲覧専用)</p>



<p class="wp-block-paragraph"><a href="https://script.google.com/macros/s/AKfycbzymzIVUb0kSs64M5t53XYNKNoXJ2dKM227LxF0ShvSSa2VUfbKRMIuKfIZgswe_PHw/exec" target="_blank" rel="noopener noreferrer nofollow">入力フォームを別タブで開く</a>(登録した内容は、上のスプレッドシートの台帳に入ります)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/spreadsheet-ledger-input-form/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
