

無料で6分しか使えないのは損です
Google Apps Script(GAS)は、Googleが提供する無料の自動化ツールです。Googleアカウントさえあれば誰でも利用でき、スプレッドシートやGmail、カレンダーなどのGoogleサービスを連携させて業務を効率化できます。美容サロンを経営している方なら、顧客リストの管理や予約確認メールの送信など、毎日の繰り返し作業を自動化することで大幅な時間短縮が可能になります。
プログラミング経験がなくても大丈夫です。JavaScriptという言語をベースにしていますが、基本的なコードをコピーして少し修正するだけで使えるようになります。実際、美容業界で働く多くの方がプログラミング未経験からスタートして、予約管理システムや顧客データベースを自作しています。
ただし、無料で使えるからといって制限がないわけではありません。1回の実行時間は最大6分、1日あたりの合計実行時間は90分という制約があります。これを知らずに大量データを一度に処理しようとすると、途中で止まってしまい時間を無駄にすることになります。逆に言えば、この制限さえ理解していれば、ほとんどの業務自動化には十分対応できるということですね。
Googleスプレッドシートから直接Apps Scriptを開く方法が最も簡単です。まず、Googleスプレッドシートを新規作成または既存のシートを開きます。画面上部のメニューバーから「拡張機能」をクリックし、ドロップダウンメニューから「Apps Script」を選択してください。すると、新しいタブでスクリプトエディタが開きます。
初めて開いたときは「無題のプロジェクト」という名前になっています。プロジェクト名は後で管理しやすいように変更しておくとよいでしょう。たとえば「顧客管理システム」「予約通知自動化」など、わかりやすい名前をつけます。エディタ画面の左上にあるプロジェクト名をクリックすれば、いつでも変更可能です。
エディタが開くと、すでに「function myFunction() { }」というサンプルコードが表示されています。
ここが実際にコードを書く場所です。
最初は何も書かれていない空の関数ですが、この中にやりたい処理を追加していきます。
Google Apps Script公式ドキュメント(基本概要と機能の全体像が確認できます)
Apps Scriptを初めて実行するとき、必ず「承認が必要です」というポップアップが表示されます。これは、あなたのGoogleアカウントのデータ(スプレッドシートやGmailなど)にアクセスする許可を求めているものです。スクリプトが勝手にデータを操作しないよう、Googleが安全性を確保するための仕組みになっています。
承認手順は次の通りです。「権限を確認」ボタンをクリックし、使用するGoogleアカウントを選択します。すると「このアプリは確認されていません」という警告画面が出ることがありますが、自分で作成したスクリプトなので問題ありません。画面左下の「詳細」をクリックし、「(プロジェクト名)に移動」というリンクをクリックしてください。
最後に「許可」ボタンを押せば承認完了です。
この承認は最初の1回だけで、2回目以降は表示されません。ただし、スクリプトの内容を大きく変更して新しい権限が必要になった場合は、再度承認画面が出ることがあります。美容サロンで複数のスタッフがスクリプトを使う場合、それぞれのアカウントで初回承認が必要になるので注意しましょう。
Apps Scriptの最も基本的な使い方は、スプレッドシートとの連携です。スプレッドシートのデータを読み取ったり、自動で書き込んだりすることで、手作業によるミスを防ぎながら作業時間を大幅に短縮できます。美容サロンの顧客リストや予約台帳をスプレッドシートで管理している場合、この連携が特に役立ちます。
スプレッドシートを操作する基本コードは「SpreadsheetApp.getActiveSpreadsheet()」です。これで現在開いているスプレッドシート全体を取得できます。その中から特定のシート(タブ)を指定するには「getSheetByName("シート名")」を使います。たとえば「getSheetByName("顧客リスト")」と書けば、顧客リストという名前のシートにアクセスできるわけですね。
データを読み取るときは「getRange()」でセルの範囲を指定します。1行ずつ読むより、まとめて読み取る方が処理速度が速くなります。たとえば「getRange("A2:C100").getValues()」とすれば、A列からC列の2行目から100行目までのデータを一括で取得できます。美容サロンで100件の予約データを処理する場合、これなら数秒で完了します。
初心者が最も多く遭遇するミスは、変数の宣言忘れです。プログラミングでは、データを入れる箱(変数)を使う前に「これから使います」と宣言する必要があります。たとえば「var customerName」と書いてから使うのがルールです。宣言せずにいきなり使うと「ReferenceError: xxx is not defined」というエラーが出ます。
2つ目によくあるのが、セルの指定ミスです。スプレッドシートのA列は数字の1、B列は2というように内部的には数字で管理されています。「getRange(1, 1)」と書くとA1セルを指しますが、行番号と列番号を逆に書いてしまう人が多いんです。どこのセルを操作しているかわからなくなったら、Logger.log()で確認する習慣をつけましょう。
関数名のスペルミスも頻発します。「getRange」を「getRenge」と書いたり、大文字小文字を間違えたりするケースです。JavaScriptは大文字小文字を厳密に区別するので、「getrange」と小文字で書いても動きません。エラーメッセージが出たら、まず関数名のスペルを確認してみてください。
意外とそれだけで解決することが多いです。
美容サロンでは、予約管理システムとしてApps Scriptを活用できます。Googleフォームで予約を受け付け、その情報を自動的にスプレッドシートに記録し、さらに確認メールを自動送信する流れを構築可能です。これにより、予約受付から確認メールまでの一連の作業が完全自動化され、スタッフは施術に集中できます。
顧客の来店履歴や施術内容をスプレッドシートで管理している場合、誕生日月のお客様に自動でDMを送る仕組みも作れます。スプレッドシートに顧客の誕生日データを入れておき、毎月1日にスクリプトが自動実行されて該当月生まれのお客様にメールを送信します。1件ずつ手作業で送る手間がなくなり、送り忘れも防げますね。
在庫管理にも応用できます。美容商材の在庫数をスプレッドシートで記録し、一定数を下回ったら自動で通知メールを送る設定が可能です。たとえばカラー剤の在庫が10本以下になったら担当者にアラートメールが届くようにしておけば、発注忘れによる品切れリスクを大幅に減らせます。こうした通知機能は、Apps Scriptのトリガー機能と組み合わせることで実現します。
サロン業務を自動化する実践例(美容サロン向けGAS活用の具体的な手順が掲載されています)
Apps Scriptの無料版には、実行時間と頻度に関する制限があります。1回のスクリプト実行は最大6分まで、1日あたりの合計実行時間は90分までです。これは一般的なGoogleアカウント(コンシューマーアカウント)の場合の制限で、大量データを一度に処理するには不十分に感じるかもしれません。
しかし、美容サロンの日常業務であれば無料版で十分対応できます。たとえば100件の予約データを処理するのに1分もかかりません。メール送信も1件あたり数秒なので、1日に数十件程度なら問題なく処理できます。制限にかかる場合は、処理を小分けにして複数回に分けて実行する工夫をすれば解決します。
Google Workspaceの有料プラン(Business以上)を利用している場合、制限が大幅に緩和されます。1回の実行時間は最大30分、1日あたりの合計実行時間は6時間まで拡大されます。大規模な美容チェーンで複数店舗のデータを一括処理する場合は、有料プランの検討価値がありますね。同時実行数も増えるため、複数のスタッフが同時にスクリプトを使う環境では有料プランの方が安定します。
トリガー(自動実行の設定)の数にも制限があります。無料アカウントでは1プロジェクトあたり最大20個のトリガーを設定できます。美容サロンで「毎朝9時に予約確認メール送信」「毎月1日に誕生日DM送信」など複数の自動化を設定しても、20個の枠内で十分収まるでしょう。
スクリプトエディタでコードを書いたら、必ず保存してから実行しましょう。保存は画面上部のディスクアイコンをクリックするか、キーボードの「Ctrl + S」(Macは「Command + S」)で行えます。保存せずに実行ボタンを押すと、古いバージョンのコードが動いてしまい、「変更したのに反映されない」という混乱が起きます。
プロジェクト内に複数の関数を作る場合、それぞれの役割がわかるように名前をつけることが大切です。「function myFunction()」という汎用的な名前ではなく、「sendReservationEmail()」(予約メール送信)や「updateCustomerList()」(顧客リスト更新)など、具体的な名前にしましょう。半年後に見返したとき、何をする関数なのか一目でわかります。
バージョン管理機能も活用してください。スクリプトエディタの上部メニューから「バージョン」→「バージョンを管理」を選ぶと、過去の編集履歴を保存できます。大きな変更を加える前にバージョンを保存しておけば、もし動かなくなっても以前の状態に戻せます。美容サロンで複数人がスクリプトを編集する場合、誰がいつ何を変更したか記録として残せるので安心ですね。
コメント機能を積極的に使いましょう。コードの前に「//」をつけるとコメント行になり、処理には影響しません。「// ここで顧客リストから誕生日月のデータを抽出」といった説明を書いておくと、後で読み返したときや他のスタッフが見たときに理解しやすくなります。特に美容業界特有の処理(施術メニューコードの変換など)には、必ずコメントを残しておくことをおすすめします。
エラーメッセージは英語で表示されますが、恐れる必要はありません。メッセージには必ず「どこで」「何が」問題なのかが書かれています。たとえば「TypeError: Cannot read property 'getRange' of null」なら、「nullの何かにgetRangeを使おうとした」という意味です。つまり、空っぽのシートに対して操作しようとしている可能性が高いですね。
エラーの行番号が表示されるので、その行を重点的にチェックしましょう。
行番号はエディタの左側に表示されています。
「at line 15」と書かれていたら、15行目付近に問題があります。ただし、実際の原因は数行前にあることも多いので、前後数行も一緒に確認してください。
Logger.log()は強力なデバッグツールです。変数の中身を確認したいときに「Logger.log(変数名)」と書いて実行すると、実行ログに値が表示されます。たとえば「Logger.log(customerName)」とすれば、その時点でcustomerNameに何が入っているか確認できます。実行ログは画面下部の「実行ログ」ボタンを押すと表示されます。思った通りのデータが入っていなければ、その前の処理に問題があるということです。
権限エラー「Exception: You do not have permission to call」が出たら、承認をやり直す必要があります。スクリプトエディタの上部にある実行ボタンを押すと、再度承認画面が表示されます。新しい機能を追加して新たな権限が必要になった場合によく起こるエラーなので、焦らず承認手続きを進めましょう。美容サロンで複数アカウントを使っている場合、それぞれのアカウントで承認が必要になる点も覚えておいてください。
実行ログは、スクリプトが実際にどう動いたかを記録する重要なツールです。エディタ画面の下部にある「実行ログ」ボタンをクリックすると、過去の実行履歴とエラー内容が時系列で表示されます。正常に終了した場合は緑色のチェックマーク、エラーで止まった場合は赤い×マークが付きます。
Logger.log()で出力した内容もここに表示されます。たとえば顧客リストから取得したメールアドレスが正しいか確認したいときは、「Logger.log(emailAddress)」と書いて実行すれば、実行ログに実際のメールアドレスが表示されます。複数の値を確認したい場合は、何度もLogger.log()を書けば全部記録されますね。
実行時間も確認できます。各実行の横に「3.2秒」のように表示されるので、どの処理に時間がかかっているか把握できます。6分制限に引っかかりそうな処理を見つけたら、その部分を最適化する必要があるという判断材料になります。美容サロンで大量の顧客データを扱う場合、実行時間のチェックは必須です。
エラーメッセージの詳細も実行ログから確認できます。エラーが出た実行をクリックすると、どの行で何が起きたのか、スタックトレース(エラーに至るまでの経路)が表示されます。初心者にはわかりにくい情報も含まれますが、エラーの行番号だけでも確認すれば問題箇所を特定できるので、まずはそこから始めてみましょう。
6分の実行制限を超えそうな処理は、複数回に分けて実行する設計が必要です。たとえば1000件の顧客データに対してメールを送る場合、一度に全件処理するのではなく、100件ずつ10回に分けて処理します。スクリプト内で「何件目まで処理したか」を記録しておき、次回実行時はその続きから処理を再開する仕組みを作ります。
PropertiesServiceを使えば、処理の進捗状況を保存できます。「PropertiesService.getScriptProperties().setProperty('lastRow', '100')」のように書けば、最後に処理した行番号を記録できます。次回実行時に「getProperty('lastRow')」で読み取れば、前回の続きから処理を再開できますね。美容サロンで大量の予約データを処理する場合、この方法が有効です。
時間駆動型トリガーと組み合わせると、完全自動化が可能になります。たとえば「5分ごとに実行」というトリガーを設定しておけば、1回目の処理が6分制限で止まっても、5分後に自動的に次の処理が始まります。処理の進捗を記録しておけば、数時間かかる大規模な処理でも完全放置で完了させられます。
処理の効率化も重要です。スプレッドシートの読み書きは時間がかかるので、「getValue()」を何度も呼ぶのではなく「getValues()」でまとめて取得しましょう。美容サロンで500件の顧客データを処理する場合、1件ずつ読み取ると5分以上かかりますが、まとめて取得すれば数秒で終わります。この差が6分制限を超えるかどうかの分かれ目になります。
スクリプトエディタには、コーディングを助ける便利機能が多数搭載されています。自動補完機能もその一つで、関数名の最初の数文字を入力すると候補が表示されます。たとえば「get」と入力すると「getRange」「getValue」など関連する関数がリストアップされるので、正確なスペルを覚えていなくても安心です。
検索・置換機能は、長いコードの中から特定の単語を探すときに便利です。「Ctrl + F」(Macは「Command + F」)で検索ウィンドウが開き、キーワードを入力すれば該当箇所がハイライト表示されます。複数箇所で使っている変数名を一括変更したいときは、「Ctrl + H」で置換機能を使えば一度に修正できますね。
フォーマット機能を使うと、コードの見た目を整えられます。インデント(字下げ)がバラバラになったコードも、自動的に読みやすく整形してくれます。エディタ上部のメニューから「編集」→「現在のファイルをフォーマット」を選ぶだけで、美しく整ったコードになります。美容サロンで複数人がコードを編集する場合、フォーマットを統一しておくと管理しやすくなります。
スニペット機能も活用してください。よく使うコードのパターンは、別ファイルに保存しておいて必要なときにコピー&ペーストすれば効率的です。たとえば「メール送信の基本コード」「スプレッドシート読み取りの基本コード」などをテンプレート化しておけば、新しいプロジェクトを始めるときに一から書く手間が省けます。
トリガーは、スクリプトを自動実行するための仕組みです。スクリプトエディタ左側のメニューから「トリガー」アイコン(時計マーク)をクリックし、右下の「トリガーを追加」ボタンを押すと設定画面が開きます。ここで「いつ」「どの関数を」実行するか指定できます。
時間駆動型トリガーは、特定の時刻や一定の間隔で実行する設定です。「毎日午前9時」「1時間ごと」「毎週月曜日」など、様々なパターンを選択できます。美容サロンで「毎朝8時に当日の予約確認メールを送信」という自動化を設定すれば、スタッフは何もしなくても毎日決まった時刻にメールが送られます。
ただし、時間指定は1時間単位でしか設定できません。「9時30分」のように分単位で指定したい場合は、スクリプト内で時刻をチェックする処理を追加する必要があります。毎時間実行されるトリガーを設定し、スクリプトの最初で「今が9時30分かどうか」を判定して、該当する時刻だけ処理を実行する仕組みです。
イベント駆動型トリガーも便利です。「スプレッドシートが編集されたとき」「フォームが送信されたとき」など、特定のイベントが発生したタイミングで自動実行されます。美容サロンで予約フォームを使っている場合、「フォーム送信時」トリガーを設定すれば、予約が入った瞬間に確認メールを自動送信できますね。この即時性が顧客満足度の向上につながります。
Apps ScriptでGmailを操作するには、GmailAppというサービスを使います。最も基本的なメール送信コードは「GmailApp.sendEmail(宛先, 件名, 本文)」です。たとえば「GmailApp.sendEmail('customer@example.com', '予約確認', 'ご予約ありがとうございます')」と書けば、指定したアドレスにメールが送信されます。
スプレッドシートのデータを使って複数の顧客に一斉送信することも可能です。顧客リストシートからメールアドレスと名前を取得し、ループ処理で1件ずつメールを送ります。ただし、無料アカウントでは1日あたり100通までという制限があるので注意しましょう。美容サロンで大量のDMを送る場合は、数日に分けて送信する設計が必要です。
メール本文にHTMLを使えば、装飾されたメールを送れます。「GmailApp.sendEmail()」の代わりに「MailApp.sendEmail()」を使い、オプションで「htmlBody」を指定します。たとえば「htmlBody: '
ご来店をお待ちしております
'」のように書けば、見出しや段落が設定された見栄えの良いメールになります。美容サロンのブランドイメージに合わせたデザインメールを送ることで、顧客体験が向上しますね。
添付ファイルも送信できます。Googleドライブに保存したPDFファイルなどを添付する場合、「attachments」オプションでファイルを指定します。美容サロンで施術後のカルテをPDFで顧客に送る場合、スプレッドシートの顧客情報とドライブのファイルを連携させれば完全自動化が実現します。
スプレッドシートからメール送信する具体的なコード例(GAS活用のメール自動化が詳しく解説されています)
CalendarAppサービスを使えば、Googleカレンダーの予定を自動作成・管理できます。美容サロンの予約システムとして、フォームで受け付けた予約情報を自動的にカレンダーに登録する仕組みを構築できます。スタッフが手動で予定を入力する手間がなくなり、入力ミスも防げます。
予定の作成は「CalendarApp.getDefaultCalendar().createEvent()」で行います。引数にイベント名、開始日時、終了日時を指定すれば、カレンダーに予定が追加されます。たとえば「createEvent('カット予約(山田様)', new Date('2026-02-20 10:00'), new Date('2026-02-20 11:00'))」のように書きます。
複数のカレンダーを使い分けることも可能です。スタッフごとにカレンダーを分けている場合、「CalendarApp.getCalendarById('カレンダーID')」で特定のカレンダーを指定できます。美容サロンで3人のスタイリストがいる場合、それぞれのカレンダーに予約を自動振り分ける処理を作れば、誰がいつ空いているか一目でわかりますね。
予定の変更やキャンセルにも対応できます。すでに登録された予定を取得し、時間変更や削除を行うコードも書けます。顧客から予約変更の連絡が来たとき、スプレッドシートの予約情報を更新すれば、自動的にカレンダーの予定も変更される仕組みを構築できます。こうした連携により、情報の不一致によるトラブルを防げます。
Googleフォームで予約を受け付け、その回答を自動的にスプレッドシートに記録する仕組みは、美容サロンにとって非常に有用です。フォームを作成すると、回答は自動的にリンクされたスプレッドシートに蓄積されます。このスプレッドシートにApps Scriptを設定すれば、予約受付から確認メール送信、カレンダー登録まで完全自動化できます。
「フォーム送信時」トリガーを設定すると、予約が入った瞬間にスクリプトが実行されます。イベントオブジェクトから送信されたデータを取得し、その情報を使って確認メールを自動送信する処理を書きます。顧客は予約フォームを送信した直後に確認メールを受け取れるので、「ちゃんと予約できたかな?」という不安を感じることがありません。
フォームの質問項目とスプレッドシートの列が対応しているので、データの取得は簡単です。たとえばフォームで「お名前」「メールアドレス」「希望日時」を聞いている場合、スプレッドシートにもその順番で記録されます。スクリプトで「e.values」(お名前)、「e.values」(メールアドレス)のように取得できます。
予約の重複チェックもスクリプトで実装できます。新しい予約が入ったとき、すでに同じ時間帯に予約が入っていないかスプレッドシートをチェックし、重複していれば警告メールを送る処理を追加します。美容サロンで同じ時間に複数の予約が入ってしまうトラブルを防げますね。こうした細かなビジネスロジックを自動化することで、業務の質が大きく向上します。
スプレッドシートを顧客管理データベースとして活用する場合、データの構造設計が重要です。1行目に項目名(顧客ID、氏名、メールアドレス、電話番号、誕生日、来店履歴など)を配置し、2行目以降に顧客データを入力します。Apps Scriptでこのデータを読み取り、検索や集計、更新を自動化できます。
顧客IDを自動採番する仕組みも作れます。新しい顧客が登録されたとき、最後の行の顧客ID番号を取得して1を足した番号を自動的に振ります。たとえば最後の顧客がC0123なら、新規顧客はC0124になります。手動で番号を振ると重複や欠番が発生しますが、自動化すれば確実に連番管理できますね。
誕生日月の顧客を自動抽出する処理は、美容サロンのDM送信に便利です。毎月1日に実行されるトリガーを設定し、スプレッドシートから当月生まれの顧客を検索してメールアドレスのリストを作成します。そのリストに対してバースデークーポン付きのメールを一斉送信すれば、顧客ロイヤルティが向上します。
来店履歴の集計も自動化できます。各顧客の来店回数や最終来店日をカウントし、「3ヶ月以上来店していない顧客」を抽出して再来店を促すDMを送る仕組みを構築できます。美容サロンにとって既存顧客の維持は新規獲得よりもコスト効率が良いので、こうしたデータ活用は経営に直結する価値がありますね。
Apps Scriptの真の力は、複数のGoogleサービスを連携させたときに発揮されます。スプレッドシート、Gmail、カレンダー、ドライブ、フォームをすべて連動させることで、業務プロセス全体を自動化できます。美容サロンの予約から施術完了までの一連の流れを完全自動化することも可能です。
たとえば、次のような流れを構築できます。顧客がGoogleフォームで予約を送信すると、自動的にスプレッドシートに記録され、Googleカレンダーに予定が登録され、確認メールが送信されます。予約日の前日になると、リマインダーメールが自動送信されます。施術後には、Googleドライブに保存された施術記録PDFが顧客にメール送信されます。
複数サービスの連携で重要なのは、データの一貫性を保つことです。スプレッドシートを「真実の単一情報源」として、すべてのサービスがここを参照・更新する設計にします。カレンダーやメールの内容も、すべてスプレッドシートのデータから生成します。こうすることで、情報の食い違いによるトラブルを防げますね。
エラーハンドリングも重要になります。複数のサービスを連携させると、どこか一箇所でエラーが出ると全体が止まってしまいます。try-catch文を使ってエラーをキャッチし、エラーが出ても処理を続行する、あるいは管理者に通知する仕組みを入れておきましょう。美容サロンの営業中にシステムが止まると大きな損失なので、エラー対策は必須です。
Apps Scriptで顧客情報を扱う場合、セキュリティには細心の注意が必要です。スプレッドシートの共有設定を適切に管理し、必要な人だけがアクセスできるようにします。「リンクを知っている全員が閲覧可」という設定は避け、特定のGoogleアカウントのみに閲覧・編集権限を付与しましょう。
スクリプトの共有にも注意が必要です。スクリプトエディタで作成したコードは、デフォルトではスプレッドシートの共有設定と同じ権限になります。つまり、スプレッドシートを共有した相手はコードも見られます。美容サロンで業務委託スタッフにスプレッドシートだけ共有したい場合は、スクリプトを別プロジェクトとして管理する必要がありますね。
APIキーやパスワードなどの機密情報は、コードに直接書かないようにしましょう。PropertiesServiceを使ってスクリプトプロパティに保存すれば、コードを共有しても機密情報は隠せます。たとえば外部の予約システムAPIを使う場合、APIキーをプロパティに保存しておけば安全です。
定期的なバックアップも忘れずに行いましょう。スプレッドシートは自動的にバージョン管理されますが、スクリプトは明示的にバージョン保存する必要があります。重要な変更を加える前には必ずバージョンを保存し、問題が起きたときに元に戻せるようにしておきます。美容サロンの顧客データは失うと取り返しがつかないので、バックアップは経営リスク管理の一環として考えるべきです。
Apps ScriptからUrlFetchAppサービスを使えば、外部のWebサービスAPIにアクセスできます。美容サロンで使っている予約システムや在庫管理システムのAPIと連携すれば、Googleサービスと外部システムの間でデータを同期できます。これにより、複数のシステムを使っていても情報の一元管理が可能になります。
たとえば、天気予報APIと連携して、雨の日だけ来店予定の顧客に「雨の日クーポン」メールを自動送信する仕組みを作れます。毎朝の天気情報を取得し、降水確率が70%以上なら当日予約の顧客にメールを送る処理です。こうした細やかなサービスが顧客満足度を高めますね。
LINEのMessaging APIと連携すれば、予約確認やリマインダーをLINEメッセージで送ることも可能です。メールよりもLINEの方が開封率が高いため、確実に顧客に情報を届けられます。美容サロンで「明日の予約確認」をLINEで送信すれば、無断キャンセル率を大幅に減らせるでしょう。
決済システムAPIと連携すれば、事前決済の自動化も可能です。予約時にクレジットカード決済を済ませてもらい、決済完了情報をスプレッドシートに記録する仕組みです。当日の会計処理が不要になり、スタッフの負担が軽減されます。ただし、決済情報を扱う場合はセキュリティに特に注意が必要なので、PCI DSSなどの基準を満たす設計にしましょう。
複数のスタッフがApps Scriptを使う場合、コードの標準化が重要です。関数の命名規則や変数名のルールを決めておけば、誰が書いたコードでも他のスタッフが理解しやすくなります。たとえば「顧客関連の関数には必ず'customer'を含める」「日付関連の変数は'date'で終わる」などのルールを作ります。
ドキュメンテーションも欠かせません。各関数の冒頭にコメントで「何をする関数か」「どんな引数を受け取るか」「どんな値を返すか」を明記しておきます。美容サロンで新しいスタッフが入ったときも、ドキュメントがあれば自分で理解して使えるようになりますね。
共有スプレッドシートでの同時編集には注意が必要です。複数のスタッフが同時にスプレッドシートを編集している状態でスクリプトを実行すると、データの整合性が崩れる可能性があります。LockServiceを使って排他制御を実装し、スクリプト実行中は他のスクリプトが動かないようにする設計が必要です。
定期的な勉強会を開催するのも効果的です。Apps Scriptの新しい活用法や便利なテクニックをスタッフ間で共有することで、チーム全体のスキルが向上します。美容サロンで1人だけがスクリプトを理解している状態は、その人が休んだときに業務が止まるリスクがあるので、知識の共有は経営の安定にもつながります。

【先行美容液】トゥヴェール クリスタルエッセンス 21mL 高濃度 ビタミンC誘導体 APPS ナイアシンアミド フラーレン セラミド エイジングケア 導入液