20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】StandaloneScriptsでスクリプトを共通化する

Last updated at Posted at 2019-08-13

目的

Container Bound ScriptsとしてスプレッドシートにGASを組み込んでいるが、そのシートを10ファイルほど複製して使用することになった。
この場合、GASに変更を加える時に10ファイル全て変更しなければならないので
今のうちにStandalone Scriptsに機能を移動し共通化しておきたい。
これが意外と情報が出てこなかったのでメモしておく。

Standalone Scriptsを作成する

Google Driveの任意の場所にGoogle Apps Scriptファイルを作成する。
「右クリックメニュー」 > 「その他」 > 「Google Apps Script」

これがContainerにBoundしていない、Standalone Scriptsとなる。
スプレッドシート上で行いたい処理を上記ファイルに記述し、
各スプレッドシートからはその処理を読み込む形にする。

デフォルトの「コード.gs」にサンプルとして以下の関数を作成した。

function oishiiOniku() {
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadSheet.getSheetByName("シート1");

  sheet.getRange(1, 1).setValue("おいしいお肉");
}

関数を作成したので、これをスプレッドシートから読み込むための準備をする。
「メニュー」 > 「ファイル」 > 「版を管理...」

02.png

版を管理のダイアログに記載がある通り、
他のスプレッドシートからこのファイルをライブラリとして読み出すためにはバージョンを定義しなければならない。
変更内容を入力して「新しいバージョンを保存」を行うとVer1が定義されるので「OK」を押す。

次にプロジェクトのプロパティを表示し、「スクリプトID」を控えておく。
「メニュー」 > 「ファイル」 > 「プロジェクトのプロパティ」

スプレッドシートに連携する

スクリプトを使用する側のスプレッドシートを立ち上げ、
スプレッドシートからスクリプトエディタを表示する。
続けて、スクリプトエディタからライブラリのダイアログを表示する。
「メニュー」 > 「リソース」 > 「ライブラリ...」

「ライブラリを追加」のところに先ほど控えたスクリプトIDを入力して「追加」を押す。
03.png

「バージョン」は版を管理で定義したバージョンに合わせる必要がある。
今回であればVer1にする。当然最新のVer以外を指定することもできる。
また、「識別子」はスクリプトを読み出す際にコードに記述するため、
わかりやすく編集しておくと良い。

oishiiOnikuを実行する

あとは通常通りスプレッドシードのスクリプトとしてoishiiOnikuを読み出す処理を書けば良い。

function myFunction() {
  Sample.oishiiOniku();
}

「識別子.関数名」と書いて実行するだけで、無事処理が実行された。
04.png

補足

スクリプトのバージョンを更新した場合に、結局すべてのシートで
バージョンを合わせに行く必要があるのでは…?と思ったが、
最新バージョンが定義された場合は自動で追従しているようだった。(詳細未確認)

参考にした情報

1つのGASを複数のスプレッドシートで利用する方法(Google Apps Script)

20
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?