伴走先生用請求書自動作成スクリプトについて
このチャプターでは、伴走先生用に提供している請求書自動作成スクリプトの使い方・アップデート方法に関する方法を記述しています。
このスクリプトは、Google Apps Scriptという技術で動作しています。簡単に言えば、Excelのマクロのようなものです。
誰が作ったかわからないスクリプトを、このページに書いてある方法で読み込むことは大変危険です。作成元を厳重に確認するようにしてください。
【重要】責任範囲について
このスクリプトは、ダーさんが個人利用目的で開発したものを、他の伴走先生も利用できるように公開しているものです。夢中教室およびワオフル株式会社が承認しているものではなく、公式ツールでもありません。
不具合等の無いように努めて開発していますが、誤った請求結果を出すことやスプレッドシートの破損などが起こる可能性もあります。そのようなことが起こってしまった場合でも、私は一切責任を負うことができません。あくまでご自身の責任のもと、内容を十分理解してご利用ください。
また、本スクリプトによるスプレッドシートへの変更に対しては、「やり直し」機能が無効になります。使用にあたっては、バックアップやコピーなどを取ることを強くおすすめします。
【重要】セキュリティについて
このスクリプトを使用するに当たり、「Googleスプレッドシートのすべてのスプレッドシートの参照・編集・作成・削除」という、かなり強力な権限を許可する必要があります。
本スクリプトは、スクリプトを実行したスプレッドシートに含まれるシートを授業数カウントのためにすべて参照しますが、私やワオフル株式会社を含めスプレッドシートの外部に送信したり、それを内部で保管することは一切しておりません。
ソースコード(プログラムの中身)は、すべてこちらで公開しています。
https://github.com/wowfull/create-wow-invoice/tree/release-v25
また、内部的に「Day.js」という著名なライブラリを使用しています。プロジェクトIDはdayjsです。
このスクリプトはこのサイトから読み込んでいるわけではなく、自動で同期しているわけでもありません。できるだけ最新版を公開できるように努めておりますが、予期せず実際に稼働しているバージョンとずれることもあります。
導入手順
スプレッドシートのコピー
みやもんから、生徒情報スプレッドシートを受け取ってください。
実行ボタンの作成
スプレッドシートを受け取ったら、「スケジュール」に以下のボタンが有るか確認してください。

もしも見当たらない場合は、任意の場所に、または新しくシートを作成し、「挿入」から図形などを適当に挿入してください。その後、その図形の右上の「⋮」を押して、「スクリプトを割り当て」をクリックしてください。その後、「請求書作成+PDF作成」を同時に行いたい場合は「fill」と、PDF出力だけを行う場合は「pdf」と入力してください。
これらは、それぞれ「fill/pdf という関数(スクリプトの一部)を呼び出す」という意味になります。


スクリプトの導入
複数のアカウントがあり、かつ一番上に出てくるアカウント以外を使用している場合は、このまま続行すると認証がズレてエラーになります。以下のいずれかの方法で回避してください。
- ブラウザの別プロファイルを作成し、または別のブラウザをインストールし、夢中教室用に使っているアカウントのみでログインする
- Googleアカウントすべてログアウトし、夢中教室用のアカウントに一番にログインし、その他のアカウントにはあとからログインする
「拡張機能」→「Apps Script」に進んでください。

以下と同じ画面になっている場合は、そのまま「セキュリティ警告」の章に進んでください。

まず、「ファイル」の右にある「+」をクリックし、「スクリプト」を押し、「main」を作成してください。自動的に「main.gs」という名前になります。

完成したら、以下の内容をコピーして挿入してください。
/*
<=====
ここにある「CreateWowInvoice」にコードが入っています
アップデートをするように指示があった場合は、指示された数字のバージョンに変更してください
HEAD(開発モード)にすると試験的機能を試すことができますが、動作が不安定です
これを選択したことにより動作が不安定になっても補償はいたしかねます
<=====
この下にある関数はボタンから呼び出すためのものです
*/
function fill() {
return CreateWowInvoice.fillInWowInvoice();
}
function pdf(){
return CreateWowInvoice.createPdfOutput();
}
その後、左の「ライブラリ」の右にある「+」をクリックし、「ライブラリの追加」を行います。

「スクリプトID」には、以下の文字列を入れてください(コピー可能です)。
1iN-7vr4T9sko5ACgpUzJVATxShff5yWjdvew2l1rC557YN__QIpjjnxD
セキュリティ警告
以下の画像は、すべてこちらのサイトから引用しております。
これで、スクリプト実行の準備が整いました。「請求書PDF作成」または先ほど作成したボタンをクリックすることで実行します。
スクリプトを初回に実行しようとした際に、以下のような警告が現れます。

「権限を確認」を押して続行してください。

アカウントを選択します。
このスクリプトはGoogleに提出して審査を受けているわけではないため、このような警告が出ます。

左下の「詳細」を押して続行します。

権限内容を確認し、問題なければ「許可」をクリックします。

この承認作業を行ったあとも、定期的に警告メールが届くようになります。

おそらくはこのスクリプトとと同じものですが、定期的に「セキュリティ診断」から見覚えのないものがないか確認することを推奨します。
バージョンについて
このスクリプトは、不具合や法改正などにより更新の必要がある場合に随時アップデートを行っています。リリースはこちらのページから参照できます。
アップデート方法
スプレッドシートを開き、「拡張機能」→「Apps Script」を開きます。

「main.gs」に中身が入っていて「CreateWowInvoice」があることを確認したら、「CreateWowInvoice」をクリックします。

「バージョン」を、指示のあった値に変更します。

「HEAD(開発モード)」は選択しないでください。私がスクリプトの改造途中だった場合、開発中の不完全で破壊的なスクリプトが動作してしまう危険性があります。
Q&A
Q. 1日に2回授業をした場合はどうすればいいですか?
必ず同じ日付を2回連続で記入してください。この方式に従って記入しない場合、1回として扱われます。
Q. スプレッドシートが生徒を認識していないみたいです。
以下の2点を確認してください。
- シート名が「くん・ちゃん・さん・君・様」のいずれかで終わっていること
- この法則に従わないシート(例えば、「生徒情報」「スケジュール」「〇〇ちゃん指導情報」)のように記入すると、生徒の授業シートとして認識しません。
- 授業日付がB列に入っていること
- 日付を文字列で入力していないこと
2026年の02月03日のようにいれると文字列になります。必ず2026/02/03のように、「日付値」で入力してください。- 単に
02/03と入れた場合、見た目は02/03ですが、2026年に記入を行った場合は内部的に2026/02/03となっています。この状態でも問題なく動作します。
Q. 請求書作成シートを改造してもいい?
文字列、色の変更は構いませんが、行や列の追加は処理が狂うので控えてください。
バージョンrelease-v25より、スプレッドシートの改造チェックが入るようになりました。重要な部分の値が異なっている場合、途中で実行エラーとなります。その場合、請求書用のシートの名前を変更すると新しくテンプレートを持ってくることができます。
Q. 面倒なので手動で入力する使い方をしてもいいですか?
構いません。手動入力をするテンプレートとしても問題なく使用できます。
なお「No」「単価」「金額」「合計」などは通常のスプレッドシート関数で自動算出されます。そのため、手動入力の場合でも便利にお使いいただけます。
Q. 授業回数と請求書の回数が合いません
このスクリプトは日付で授業の実施有無を判定して動作していますので、生徒ごとの記録で入力した日付の「年」がおかしくなっていないかを確認してください。
Q. 出力する請求書の名前がずっと変わりません。
スプレッドシートの公開範囲を「リンクを知っている人全員」にすると解決します。Google Apps Scriptの仕様だと思います。
Q. 請求書番号を変更したいです。
日付から関数を使って自動生成しているだけなので、勝手に変更していただいて構いません。
Q. 間違えて請求書を大幅に壊して元に戻せなくなりました
請求書作成をリネームするか削除して、「請求書PDF作成」を押すと自動的にシートをコピーするかどうか聞いてくれるウィンドウが出現しますのでそちらのテンプレートを新しくご利用ください。コピー回数によるペナルティ等は発生しません。
Q. 少人数授業などの記入はどうしたらいいですか?
手動で単価に入っている関数などを無視して、単価と数量を直接入力してください。変更した部分は次回請求書作成時に自動でリセットされます。
Q. 未来や過去に実施した授業はカウントされますか?
自動的に「対象の年月に合致する授業」のみを抽出しているため、例えば11月の授業予定を生徒ごとのシートに記入していたとしても10月に実施した授業のみがカウントされます。
Q. 月をまたいで授業を振り替えました。特別な対応は必要ですか?
例えば11月に予定していた授業を10月に振り替えた場合は、その振替授業分の請求は10月分の扱いになりますので日付を10月のまま記入してください。
夢中教室では実際に授業を実施した分の請求を保護者に発注しているため、統一をお願いします。
困ったときは
SlackでダーさんにDMを送るか雑談でメンションしてください。
ダーさんは他の伴走先生のスプレッドシートを見る権限を持っていないため、ご連絡の際は私に確認権限があるかどうかを必要に応じて確認してください。
もともとは個人用に作成したスクリプトであるため、相談および改善・改良・バグ修正のご要望等は受け付けますが、完全な対応や全面的なサポートをお約束するものではないことをご容赦ください。
じーつー及びみやもんはスクリプトの中身を一見してはいますがすべてを把握しているわけではないため、そちらに請求書生成のバグなどは送らないようお願い申し上げます。
他方、生徒情報シートに関する一般的なご質問はじーつーやみやもんに連絡をお願い致します。