
【第3回】『同じデータは二度打たない!』地図・図面は自動で入力&ワンタップで繋がる「作業指示書アプリ」
カグヤ:
バントウさん!
前回作った各種マスターや中間テーブルのおかげで、アプリの中に現場の情報がズラッと揃いました!
アプリを触るのがだんだん楽しくなってきましたよ!
バントウ:
それはよかった!
土台(マスター)がしっかりしてると、これからの拡張がめちゃくちゃ楽になるんだよ。
じゃあ今回は、実際に日々の現場を動かす「作業指示書」を作っていこう!
カグヤ:
作業指示書ですか!今は紙で出してますね。
それをスマホで見れるようにできるんですか?
バントウ:
もちろん!職人さんたちもスマホで見れるようにしておけば、クラウド上の図面にアクセスできたり地図リンクから現場までのナビを起動できたりできるんだよ
カグヤ:
えっ?それめっちゃ便利じゃないですか!
……あ、でもバントウさん。
それって…毎回「地図のURL」とか「図面のリンク」をコピペして入力しなきゃいけないんじゃないですか?
それだと、めちゃくちゃ大変そうです……。
バントウ:
ははは、カグヤさん。そんなめんどくさいこと、僕がさせると思う?(笑)
すでに工事マスター(M_Projects)に地図や図面のURLが入ってるんだから、作業指示書を作る時にアプリが自動で引き継いで入力してくれるように設定するんだよ。
カグヤ:
えっ!? 自動で引継ぎ!?
🛠️ Step 1:作業指示書作成と工事マスターからの「自動引継ぎ」
バントウ:
まずはスプレッドシートに T_WorkOrders という新しいシート(テーブル)を作ろう。 1つの工事(M_Projects)に対して、日々の作業指示書は何枚も発行されるよね。
カグヤ:
はい! 1つの工事に対して、現場に行く日ごとに何回も指示書が発行される。 これって……前回の「1対多」の関係ですね!
バントウ:
正解! だから T_WorkOrders にはどの工事の指示書かを特定するために、ProjectID のカラムを入れて、AppSheet側でM_Projectsをリレーション(Ref)で繋げるんだ。
カグヤ:
リレーション(Ref)で繋ぐのはわかるんですけど、他のカラムの設定はどうするんですか?
バントウ:
そうだね、今回はT_WorkOrdersを使ってAppSheetの設定を説明しようか!
📄 作業指示書テーブル(T_WorkOrders)のカラム

WorkOrderID(指示書ID)型:Text
作業指示書用のID欄。
前回のテーブル達も全部そうなんだけど、IDカラムにはInitial Value(初期値)に 「UNIQUEID()」 と入力して8桁のランダム英数字を自動生成するんだ。
ちなみにUNIQUEID("UUID")にするとGoogleカレンダーのように「123e4567-e89b-12d3-a456-426614174000」という形のIDになるよ。
ProjectID(工事名)型:Ref
M_Projects内の工事と紐づけるためにリレーションで繋げる。
まだ登録していない工事の場合は「その他」を選択しておく。
Destination(行先)型:Text
ProjectIDがあるのにまた行先があるの?と思うよね!
ProjectIDで「その他」を選んだら指示書に表示されるのも「その他」になっちゃうんだ。
だからProjectIDで「工事名が選択されている」場合はその工事名が自動で入力され、「その他」の場合は行先名を直接入力できるようにしておくんだよ。
WorkDate(作業日)型:Date
作業する日付。前日に作ることが多いからInitial Value(初期値)を TODAY()+1にしておくと便利。
WorkType(作業区分)型:Enum
当日の施工内容を「取付」「補修」「現調」「搬入」などから選択。
Members(メンバー)型:EnumList
EnumListは1つのカラムに複数データを入れられるんだ!
EnumListを選択したら、Base type: Ref ➔ 参照先: M_Employeesを選択し、さらに関数で施工班メンバーのみ選択できるようにする。
ただし、EnumListの取り扱いは要注意!!
1つのカラムに複数のデータがあると、後々集計するときとか不具合が起きることがある。
今回の指示書の場合「1つの行先に対して誰が行く予定なのか知りたい」だけで「誰がどこへ行った?」は次の報告書で集計するから、見た目重視で使うことにしたんだよ。
InternalSupport(社内応援)型:EnumList
社内の施工班以外の応援メンバーがいるときに使う。
Membersカラム同様Base type: Ref ➔ 参照先: M_Employeesにして今度は施工班以外を選択できるようにする。
ExternalSupport(社外応援)型:Text
協力業者名などの社外からの応援部隊がいる場合に使う。
協力業者マスターやその社員メンバーのテーブルを作ったらRefで繋いだり中間テーブルで管理したりできるけど、今は手入力に設定しておけばいいかな。
HasDrawing(図面有無)型:Yes/No
新規図面や追加図面がある場合に指示書にわかりやすく「図面あり」と表示させるためのスイッチになるカラムだよ。
Initial Value(初期値)は「FALSE」にしておこう
DrawingUrl(図面URL)型:Url
MapUrl(地図URL)型:Url
この二つはそれぞれM_Projectsに登録してあるリンクを表示させるためのカラム。
それぞれInitial Value(初期値)に
DrawingUrl⇒[ProjectID].[DrawingFolderUrl]
MapUrl⇒[ProjectID].[SiteMapUrl]
と入れれば工事を選択したタイミングで自動で登録してあるURLが入力されるよ。
Notes(連絡事項)型:LongText
注意事項や連絡事項を書く欄。
LongTextを選ぶと長文を改行して書けるんだ。
Textタイプは改行できないから短い文用だね。
StaffComment(担当者コメント)型:LongText
営業担当や設計担当からのコメントがあれば書いてもらう欄として用意してる。
OtherNotes(備考)型:LongText
指示書に載せる用じゃなくて管理用の備考欄。
Status(状態)型:Enum
現在の状態を「仮予定」「確定」「延期」「中止」の中から選ぶ。
Flag1〜Flag3(予備フラグ1〜3)型:Yes/No
これらは将来用にあらかじめ作っておくフラグカラム。
スプレッドシートに後で行を追加すると、更新でエラーが出たりするから念のために作っておく。
ただ、AppSheetも進化してるのか、最近はうまく更新できるようになってるからいらないかもしれない、Initial Value(初期値)はFALSE。
CreatedAt(作成日時)型:DateTime 初期値:NOW()
UpdatedAt(編集日時)型:ChangeTimestamp
この二つはデータの作成日と変更日を記録しておく用。
カグヤ:
(AppSheetで設定してテスト中……)
あ!! 工事(ProjectID)を選んだ瞬間に、下にある「地図URL」と「図面フォルダURL」の欄に、工事マスターに登録してあったURLが自動で勝手にセットされました!!

バントウ:
簡単でしょ?
「同じデータを何度も手入力する」のは一番やっちゃいけない設計なんだ。
マスターにある情報は自動で引っ張ってくる。
これで転記ミスも入力の手間もゼロになるよね。
📞 Step 2:新・中間テーブル R_Project_ClientPersons とワンタップ電話機能!
カグヤ:
自動引継ぎ、すごすぎます! コピペの手間がゼロになりました!
あ、でもバントウさん、 現場に行っている職人さんから「監督の電話番号教えて!」って連絡が来ること、よくあるじゃないですか。
バントウ:
あるあるだね。
その度に電話番号調べてLINEで送ったりしてるよね。
じゃあ、これもAppSheetで解決してみようか。
ここで新しい中間テーブル R_Project_ClientPersons(工事・顧客社員) を作ろう!
カグヤ:
新しい中間テーブル!
「1つの工事(M_Projects)」に、「顧客の担当者さん(M_ClientPersons)」を複数人紐付けるための仲介シートですね!
バントウ:
その通り!
この R_Project_ClientPersons の電話番号カラムのType(型)を Phone に設定しておくと……
カグヤ:
あーーーっ!!
アプリの現場担当者に、現場監督さんの名前と「受話器のアイコン」が出てきました!
ポチッと押したら……そのままスマホの電話発信画面になりましたよ!

バントウ:
これで「監督の番号どれだっけ?」問題は解決。
職人さんも我々番頭も、アプリからワンタップで現場監督に電話がかけられるんだ。
💡 補足コラム:タスク管理アプリとの連携で「連絡ミスゼロ」の世界へ!……
カグヤ:
図面も地図も自動で入って、電話も一発でかかる……。
あ、そういえば! YouTubeでバントウさんが「タスク管理アプリ」の紹介をしたとき、アプリ側で作った連絡事項をAppSheetのアプリと連動させて、伝達ミスを劇的に減らすって言ってましたよね?
バントウ:
お、カグヤさん! よく覚えてるね!
タスク管理アプリでメモした「渡す図面」や「伝えること」を、そのまま工事管理アプリの指示書作成画面に自動表示させれば、渡し忘れ・言い忘れは激減するんだ。
カグヤ:
それもやりましょう! 今すぐ教えてください!
バントウ:
そうだねー、気持ちはわかるけど、GASも絡んでくるし、今回のシリーズでは「指示書~日報管理」にスポットを当てたアプリ開発だから、それはまた別の機会にしよう。
カグヤ:
あ……GAS……英文のプログラミング……(蕁麻疹)。
バントウ:
ははは(笑)。
あくまで「ノーコードで始めるセルフDX」だからね。
今回はその高度な連携機能は『お預け』!
まずはこの「自動入力」と「ワンタップ電話」という、AppSheet標準の基本機能をしっかり使いこなすのが一番大事なんだよ。
カグヤ:
そっか〜、お預けですか!(笑) でも確かに、これだけでも現場の連絡ストレスはめちゃくちゃ減りますね!
💡 まとめ&次回予告:いよいよ最終回!日報入力と自動原価集計へ!
カグヤ:
「入力させない」「ワンタップで繋がる」っていうAppSheetの凄さがどんどん分かってきました!
バントウ:
アプリを作る時は「どう入力させるか」じゃなくて「どうやったら手数を減らせるか」を考えるのが実際に使ってもらうために重要なんだよね。
カグヤ:
土台ができて、指示も爆速で出せるようになった。 次はいよいよ……?
バントウ:
いよいよ本丸!
現場に行った職人さんが打つ「作業日報(T_DailyReports)」
そしてそれが「自動で工数として集計される」仕組みを作っていくよ!
カグヤ:
ついに電卓を叩いて集計する日々が終わるんですね……!
次回も楽しみです!
カグヤ・バントウ:
それでは今日も一日、ご安全に!