【GAS】Google Apps Scriptで書いたコードをGiitHubで公開するための段取り
はじまり



前提
以下、今回紹介する方法の前提になります。
- Google Apps Scriptのエディタを使う。
- Google Chromeの拡張機能を使う。
手順1:GitHubにpushできる拡張機能を入れる
まず、Google Apps ScriptのエディタからソースをGitHubにpushできる拡張機能をインストールします。
そして、Chromeにインストールするとオプションから、Google Apps Script GitHub アシスタントにGitHubアカウントでログインします。

usernameと、GitHubのAccess Tokenを入力する必要があります。

ログインするために、GitHubでPersonal Access Tokenを発行します。
repoとgistにチェックを付けるを忘れないように気を付けます。

そして、ユーザーネームと発行したAccess Tokenを入力して、ログインします。成功すると、こんな画面が表示されます。

「Please make sure you have enabled Script API」と書いてあるので、Google Apps Script APIを利用できるようにします。
自分のGASのトップページから、設定メニューからGoogle Apps Script APIをオンにします。

これらの設定をすると、Google Apps ScriptのエディタからGitHub Assistantの拡張機能が利用できるようになります。
この画面から、リポジトリを新規作成できたり、既存のリポジトリとブランチを選んで、pullおよびpushできるようになります。

手順2:TokenやID管理用のGASライブラリを作る
Gitリポジトリを公開する場合、TokenやIDをコードに載せるわけにはいきません。しかし、GASソースを実行する際には、TokenとかIDをソースに貼る必要がありますし、それをGitの監視外にするのも何か微妙です・・・。
そこで、以下の流れで、GASのソースをGitHubリポジトリで管理します。
- TokenやIDだけを別のGASライブラリで作って、そのリポジトリも手順1の方法でPrivateリポジトリにプッシュする。
- そして、Publicリポジトリで公開しているGASライブラリで、1のGASライブラリのTokenやIDを参照する。
- TokenやIDはハードコードでGitに載らず、1のGASライブラリを参照しているソースが公開される。
こうすることで、Publicリポジトリで公開しているGASライブラリではTokenやIDがGitに載らず、そのGASライブラリを参照している形でソースが公開されます。
例えば僕は、1.のGASライブラリ(Privateリポジトリで管理する方)でただTokenやIDを返すだけの関数を作ります。

/** * Folder ID of blog draft files. * @return {string} */function BMS_DRAFT_FOLDER_ID(){ return "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";}そして、Publicリポジトリで公開するGASソースでは、先程作った関数を取得するようにします。
このライブラリのところから、「+」ボタンをクリックして、1.のGASライブラリ(Privateリポジトリで管理する方)のスクリプトIDを入力して、参照できるようにします。
この時点だと、まだParserのライブラリしか参照していません。

例えば、先程作ったGASライブラリの名前が「TokenManager」だったら、TokenManagerからTokenやIDを返す関数を読み取ります。これで別のライブラリにあるTokenやIDを定数として利用できます。

const DRAFT_FOLDER_ID = TokenManager.BMS_DRAFT_FOLDER_ID();手順3:Git履歴からTokenがあった記録を消す
手順2をやる前に、既にTokenやIDをGitに上げた事がある場合は、以下のどちらかの方法でを消しましょう。
- 新しくリポジトリを作り直す。
- Git historyからTokenやIDがあったファイルを消す。
この章では、GIt historyからTokenやIDがあったファイルを消す方法を紹介します。
まず、GitHubからコミット履歴の中にTokenやIDが、直打ちされていないかどうかを確認します。

直打ちされているのを発見しました・・・。

この直打ちされているファイルを一旦、Git historyから消します。
今回は、VSCodeでリポジトリをcloneして、Git historyを消したいと思います。
Cloneした状態で、ターミナルから以下のコマンドでGitのログを確認します。
git log --all --name-status --pretty=short --graphすると、先程TokenやIDが載っていたファイルがあることを確認できます。(qでログの表示を終了。)

そして、以下のコマンドでGit historyを消します。今回は、「constants.gs」というファイルを消したいのでこうなります。
git filter-branch --tree-filter 'rm -f constants.gs' HEAD --all今回のリポジトリで3箇所あったcommit履歴が消えたことを確認します。

今回の変更をpushします。
git push --all --force originpushしたことで、リモートリポジトリにも反映されたことを確認します。

念の為、GitHubで先程TokenやIDがあったファイルが消えていることを確認します。なくなっています。

これで、手順1の拡張機能でpushすればソースを管理できて、TokenやIDを公開せずにロジックだけ公開できるようになります。
おしまい


以上になります!
記事を共有
この記事が役に立ったなら、ぜひ他の人と共有してください!