2023-07-12

【Google Apps Script】Clasp で変数を別ファイルに切り出す

ES module では、以下のように export / import を利用して変数を別ファイルから読み込むが、この方法だと Google Apps Script 上で実行した場合に変数が読み込まれず、エラーとなってしまう。

settings.ts

export const API_BASEURL = 'https://example.com'

main.ts

import { API_BASEURL } from './settings'

function main() {
  console.log(`API_BASEURL is ${API_BASEURL}`)
}

実行ログ

ReferenceError: API_BASEURL is not defined (main @ main.gs)

このインポートされない事象を回避するため、以下いずれかの方法を取ることで変数を別ファイルから読み込むことができる。

1. exports の利用

settings.ts

export const API_BASEURL = 'https://example.com'

main.ts

declare const settings: typeof import('./settings')

function main() {
  console.log(`API_BASEURL is ${settings.API_BASEURL}`)
}

2. class の利用

個人的にはこの方法が見通しが良く好んで利用しています。

settings.ts

class Settings {
  public static readonly API_BASEURL = 'https://example.com'
}

main.ts

declare const settings: typeof import('./settings')

function main() {
  console.log(`API_BASEURL is ${settings.API_BASEURL}`)
}

参考

https://github.com/google/clasp/blob/master/docs/typescript.md