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

1251 語
6 分
【GAS】Google Apps Scriptで書いたコードをGiitHubで公開するための段取り

はじまり#

リサちゃん avatar
リサちゃん
Google Apps Scriptって、Gitで簡単に管理して公開できないのかなあ? 毎回編集してGitHubに貼り付けるのもメンドイしなあ〜。
135ml avatar
135ml
おお〜、じゃあ、GitHubを使って簡単に公開できる方法を紹介するかあ。
リサちゃん avatar
リサちゃん
YO・RO・SHI・KU!!

前提#

以下、今回紹介する方法の前提になります。

  • 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リポジトリで管理します。

  1. TokenやIDだけを別のGASライブラリで作って、そのリポジトリも手順1の方法でPrivateリポジトリにプッシュする。
  2. そして、Publicリポジトリで公開しているGASライブラリで、1のGASライブラリのTokenやIDを参照する。
  3. 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のログを確認します。

Terminal window
git log --all --name-status --pretty=short --graph

すると、先程TokenやIDが載っていたファイルがあることを確認できます。(qでログの表示を終了。)

そして、以下のコマンドでGit historyを消します。今回は、「constants.gs」というファイルを消したいのでこうなります。

Terminal window
git filter-branch --tree-filter 'rm -f constants.gs' HEAD --all

今回のリポジトリで3箇所あったcommit履歴が消えたことを確認します。

今回の変更をpushします。

Terminal window
git push --all --force origin

pushしたことで、リモートリポジトリにも反映されたことを確認します。

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

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

おしまい#

リサちゃん avatar
リサちゃん
よっしゃあああ、GitHubにあるリポジトリを公開できるようになったぜえええ。
135ml avatar
135ml
Twitter APIやSlack APIのTokenなどを貼らずに自分のソースを公開したい場合は、今回の方法をお試し下さい。

以上になります!

記事を共有

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

【GAS】Google Apps Scriptで書いたコードをGiitHubで公開するための段取り
https://endorphinbath.com/posts/gas-setup-to-publish-github/
著者
kinkinbeer135ml
公開日
2022-05-14
ライセンス
CC BY-NC-SA 4.0
関連記事 スマート
1
【GAS】Google Apps Scriptで作った自作関数に対してテストコードを書けるライブラリ「TestGAS」を作りました!
Code Google Apps Scriptで作った関数に対して、テストコードを使って動作を検証するためのツール「TestGAS」を作成および公開しました。初めて作ったテストツールですが、個人的にかなり便利なものになったので、ぜひ使ってみて下さい。
2
【Notion API】Google Apps Scriptでリッチテキストの編集を自動化する
Code NotionのAPIを使って、ページ内のブロックのリッチテキストを自動的に編集する方法を紹介します。日々の日記用のページを自動作成したり、自動更新することが出来るようになります。
3
【Notion API】Google Apps Scriptでデータベースからページの中身を取得する
Code NotionのDatabase API、Page API、Block APIでページの内容を取得する方法を紹介します。ベースはJavaScriptなのでNode.js、Deno、Bunでも流用できるかと。
4
【GAS】「承認が必要です:このプロジェクトがあなたのデータへのアクセス権限を必要としています。」の表示工程を省くようにするスコープ設定
Code GAS実行時のOAuth承認プロセスを省くために必要なappsscript.jsonのスコープ設定について紹介します。
5
【GAS】「Exception: Invalid argument: id」が出た時の対処方法
Code Google Apps Scriptで開発を行っている際に、たまに遭遇するエラー文です。シートとかファイルのオブジェクトに関係してきます。
ランダム記事 ランダム
Profile Image of the Author
kinkinbeer135ml
SIerをやめて、プログラミングを勉強しています。※Amazonアソシエイトに参加しています。
お知らせ
私のブログへようこそ!これはサンプルのお知らせです。
音楽
カバー

音楽

再生中なし

0:00 0:00
歌詞なし
カテゴリ
タグ
サイト統計
記事
287
カテゴリー
8
タグ
93
総文字数
486,174
運用日数
0
最終活動
0 日前

目次