ゆるおたノート

Tomorrow is another day.

【Clasp】ローカルでGASを書く準備 ~プロジェクトを作成する~

状況により選択してください。

  • 既存プロジェクトをローカルで編集する場合:ジャンプ!
  • ローカルでイチから開発を始める場合:ジャンプ!

【A】既存プロジェクトをローカルで編集する場合

ローカルにプロジェクトを作成

GASのプロジェクトをローカルにクローン
  1. ターミナルで「ローカル側のルートフォルダ」としたい場所に移動

    cd <フォルダのパス>
    

  2. GASのプロジェクトをローカルにクローン

    clasp cloneで、プロジェクトのデータをローカルにダウンロードします。

    clasp clone <スクリプトID>
    

    もしくは

    clasp clone <スクリプトファイルのURL>
    

    ※URLはhttps:///editの部分まででOK。

スクリプトIDの確認方法
  • プロジェクトのURLで確認する場合

    URLのスクリプトID部分を見ます。

    https://script.google.com/a/ドメイン/d/スクリプトID/edit

  • スクリプトの情報から確認する場合

    1. プロジェクトにアクセス
    2. 画面左上のファイルプロジェクトのプロパティの順に選択
    3. 情報タブのスクリプトID欄を確認
クローンが完了すると…

ローカル側でルートフォルダ以下にファイルが追加されます。

既存プロジェクトをローカルにクローンした場合のフォルダ構成

スクリプトファイル自身は、拡張子が.jsになります。

フォルダを整理する

[目標]フォルダ構成

Claspコマンドで必要なファイルだけを操作できるように、ファイルを整理します。

今回は格納先のフォルダ名をsrcとしますが、任意の名前で大丈夫です。
スクリプトをフォルダ分けしている場合もsrcフォルダ以下にまとめます。

整理後のイメージ

ファイルの移動

現在ルートフォルダに居るとして…

  1. スクリプト格納用のフォルダを作成

    mkdirコマンドで、フォルダを新規作成します。
    引数には、絶対パス/相対パスどちらでも指定できます。

    mkdir <新規フォルダ名>
    

    今回はルートフォルダ直下にsrcフォルダ作成します。

    mkdir src
    

  2. ファイルを移動する

    mv <現在のパス> <移動先(のフォルダ)のパス>
    

    スクリプトA.jssrcフォルダに移動する場合は、こんな感じ。

    mv ./スクリプトA.js ./src
    

スクリプトの格納先(=作業フォルダ)を登録

.clasp.jsonを編集して、Claspからも認識できるようにしておきます。

{
  "scriptId": "<スクリプトID>",
  "rootDir" : "<スクリプトのあるフォルダ>"
}

ちょっとややこしいですが、ここのrootDirスクリプトのルートフォルダを指します。
初期値は、前述の画像で言うとルートフォルダです。

今回はルートフォルダ直下のsrcフォルダにスクリプトファイルを置くので、このように変更しておきます。

"rootDir" : "./src"

スクリプトIDの探し方は、こちらをご参照ください。

完了。

これで、【A】既存プロジェクトをローカルで編集する場合の準備は完了です。

続きはこちらへ。

【B】ローカルでイチから開発を始める場合

ローカルにプロジェクトを作成

[目標]作成イメージ

【A】と同様に、srcフォルダにスクリプトを格納できるように準備します。

ローカル開発の開始イメージ

GASのプロジェクトを新規作成する
  1. ターミナルで「ローカル側のルートフォルダ」としたい場所に移動

    cd <フォルダのパス>
    

  2. Claspコマンドでプロジェクトを作成する

    clasp createでプロジェクトを新規作成します。

    オプションは色々使えますが、今回は作業フォルダのみ指定しておきます。

    clasp create --rootDir <作業フォルダのパス>
    

    今回は、こちらと同様にsrcフォルダを引数とします。

    clasp create --rootDir ./src
    

オプションは他にも…
  • プロジェクトを命名

    プロジェクトの名前も、作成と同時に付けることができます。

    clasp create --title <プロジェクト名>
    

    使用例。

    clasp create --title newProject
    

  • コンテナとするファイルを登録

    コンテナバインドスクリプトを作る場合は、紐付けるファイルのIDも登録しておくことも可能です。

    clasp create --parentId <紐付けるファイルのID>
    

  • その他のオプション

    他にもいろいろオプションがあるようです。
    全編英語ですが、詳しくはこちら↓を。
    GitHub - google/clasp: 🔗 Command Line Apps Script Projects

これらをまとめて、下記のようにも書くことが出来ます。

clasp create --rootDir <作業フォルダのパス> --title <プロジェクト名> --parentId <紐付けるファイルのID>

ただ、全部まとめて書くとコマンドとしては長いと思います。
(間違えずに書くのは結構しんどい…)

これらは後ほど.clasp.json等でも編集できるので、シチュエーションによって選択、ということで。

スクリプトの種類を選択

clasp createを実行すると、スクリプトの種類を選択するよう促されます。

? Clone which script? (Use arrow keys)
> standalone
  docs
  sheets
  slides
  ︙

スタンドアロンかコンテナバインドか、など状況に合わせて選択してください。

  1. >を移動

  2. Enterで決定

[結果]フォルダ構成
  • ローカル

    プロジェクトに赤字のファイルが追加されます。

    ●●

  • Googleドライブ

    「Gドライブのルートフォルダ」にも下記が追加されます。

    ●●

    ファイル名は、プロジェクト名がそのまま使われるようです。

ファイルを整理

ドライブ側のファイルを整理

Googleドライブの仕様上、そのままでも特に問題はありません。

ただ、後々使いづらくなると思う(し、個人的にも気持ち悪い)ので、探しやすい場所に移動しておきます。

設定を変更

タイムゾーン

ローカルから作り始めると、タイムゾーンアメリカになってしまうようです…

  • マニフェストファイル(appsscript.json)

    {
      "timeZone": "America/New_York",
      "dependencies": {
      },
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8"
    }
    

実行時刻の設定などで困らないように、日本時間(JST)へ修正しておきます。

"timeZone": "Asia/Tokyo",

完了。

これで、【B】ローカルでイチから開発を始める場合の準備は完了です。

このシリーズについて

Google Apps Scriptをローカルで編集する方法について、まとめています。

誤り、分かりづらい等ありましたら、ぜひコメント欄やTwitterお問い合わせフォーム等でご教示ください。

連載目次

  1. 【Clasp】ローカルでGASを編集するメリットとデメリット - ゆるおたノート
  2. 【Clasp】ローカルでGASを書く準備 ~Claspをインストールする~ - ゆるおたノート
  3. 当記事【Clasp】ローカルでGASを書く準備 ~プロジェクトを作成する~ - ゆるおたノート

参考