GASスクリプトを他のスクリプトファイルから呼び出す時のメモ（Webアプリケーションとして公開）

# はじめに
この記事は自作のGASスクリプトファイル（の関数）を、他の複数の（あるいはひとつの）GASスクリプトから利用する時の操作についてのメモ、と、その知見を社内で共有するために書いています。

# 手順概要
下記の手順で呼び出される側、呼び出す側両方で設定が必要になります。

1. 呼び出される側のファイルでの設定
    2. Webアプリケーションとして導入の設定する
2. 呼び出す側のファイルでの設定
    3. 呼び出すファイルをライブラリとして追加する
    4. プログラムを記述する
    5. プログラムを実行する
    6. おわり
3. （必要な場合）複数人（複数Googleアカウント）で利用する場合のGASスクリプトファイルの共有化方法


# 手順詳細

## 1．呼び出される側のファイルでの設定

### 1-1. Webアプリケーションとして導入
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/b2025b3f-55e0-d53c-9e74-c33a8f7c6808.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/56752ec7-e618-69ec-5e41-205bec17199f.png)

- Project Version:
    - プロジェクトファイルを公開する時のバージョン
- Execute the app as:
    - プロジェクトを実行するユーザ権限
        - Me
        - 利用者
            - Googleにログインしなければ実行不可になる。
- Who has access to the app:
    - 実行許可ユーザ
        - Anybody(だれでもログインユーザに限らず)
        - only myself（自分だけ）
        - all user（すべてのGoogleログインユーザ）
 

### 1-2. プロジェクトキーをメモする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/00be9417-f309-042d-c233-ea2b559e45bb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/eea3c2b8-f85a-10c3-4233-ab1a18f0f271.png)

## 2．呼び出す側のファイルでの設定

### 2-1. 呼び出す側のスクリプトファイルを作成する

今回はスプレッドシートのコンテナバインドスクリプトのファイルを作成して、そこから呼び出します。
スプレッドシートを開き、スクリプトエディタを開きます。
![2020-04-22_12h35_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/c65eca5b-5875-284e-b9de-c84e142e9279.png)

### 2-2. ライブラリ設定を行う
ライブラリとして、呼び出すファイルを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/72716acc-c073-c271-2576-b5c704fc10e7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/9b02b890-af8b-73ae-fe63-e4e0df229622.png)
1-2でコピーしたライブラリキーを張り付けて追加をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/ba613c81-a18f-12be-3066-0245bb10ad69.png)
呼び出されるファイルのプロジェクト名が表示されます。

### 2-3. プログラムを記述する
ここまでの操作で、呼び出す側のファイルで呼び出される側のファイルをライブラリとして使いますよ。という宣言ができた状態です。これで呼び出される側のファイルにある関数を使えるようになりました。あとは呼び出す側のファイルで好きなようにプログラムを記述するだけです。

- 例として、kabusokuというプロジェクトファイルの中にある関数を利用するには下記のように記述します。

```javascript:例：kabusokuというプロジェクトの中のonUpdateBatchCheck関数を呼び出す
function CallonUpdateBatchCheck() {
 kabusoku.onUpdateBatchCheck() 
}
//kabusokuまで入力すると入力補完も効きます。
```

### 2-4. プログラムを実行する
上記例、CallonUpdateBatchCheckを実行してみたところ、kahusokuファイルのonUpdateBatchCheckに記述されたプログラムの結果が取得できました。

### 2-5. おわり


# 注意すること　と　うまくいかない時に確認すること
- ライブラリ追加時の注意点と確認すべき内容

    - 呼び出される側のGASスクリプトファイルのプロジェクト名は、日本語でも問題ないが、その場合は「identifier」の部分に日本語以外の名前を付ける必要がある。「identifier」が日本語だとライブラリ追加の時点でエラーになる。

- 呼び出されるファイルを更新した時の注意点と確認すべき内容

    - 呼び出されるファイルにて、1-1.の作業を再実行する。その際、必ず`Newのバージョン`として公開する。
    - 呼び出すファイルにて、1-1.の作業を再実行する。その際、必ず最新バージョンを選択する。

- ライブラリを呼び出すプログラムが正しく動作しない時の注意点と確認すべき内容（単体としては動作するが、ライブラリとして外部から実行するとエラーになる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/1e378d91-7619-1ed8-c911-ed050247abeb.png)

    - 1-1の設定内容を見直してください。
    - 複数人（複数Googleアカウント）で利用する場合は後述の「スクリプトファイルの共有化」が必要なのでそちらをチェックしてください。

# 3. 複数人（複数Googleアカウント）で利用する場合のGASスクリプトファイルの共有化方法
自分以外のGoogleアカウントがマクロを実行する可能性がある場合は、下記のように、呼び出される側のGASスクリプトファイルを共有化しておく必要があります。

### 3-1. 呼び出される側のGASスクリプトファイルを開きます。
### 3-2. 画面右上の「共有」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/717381fe-af26-48ed-1347-3432442d69c8.png)

### 3-3. 図のように適切な共有設定を行います。
セキュリティを考慮して、利用状況にあった設定を選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342467/c46425c7-5fd8-80d9-2772-1aaa452fd6ec.png)