がーーーーっと作りましたし、あくまで個人で使えればいいや的なノリで作ったので雑です。
GoogleAppsScriptのローカルの開発環境をさくっと作れるといいなーと思って作りました。
とりあえず要件としては
- GoogleAppsScriptをTypeScriptで書いてJSにコンパイルできる環境を作る。
- コンパイルされたJSをアップロードできる。
この2つをGradleのタスクを実行するだけでできることを目指しました。
以上の2つはGradleのスクリプトを書くだけでも可能だとは思いましたがせっかくなのでプラグインとして開発しましたが、その話はプラグインがもう少ししっかりしたものになってからにしようかなと思います。
テンプレートはGithubにアップロードしています。
gas-project
gas-project.zip
使用する際はクローンするなりzipでダウンロードするなりしてください。
今は公開していません
仕組みとしては、gradleと、そのプラグインであるcom.moowork.nodeを利用させてもらい、GASのアップロードとnodeのpackage.json等のセットアップをプラグインを自作して、それに任せてみました。
プラグインの作成には以下の依存関係を使用しています。
dependencies {
compile 'com.google.api-client:google-api-client:1.23.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-script:v1-rev175-1.23.0'
}
テンプレを利用するために必要なもの
テンプレを利用して開発
gradlew setupGas
のタスクを走らせると、TypeScriptファイルを置くためのdevフォルダと、GoogleAppsScriptの型情報を取得するためのpackage.jsonとデフォルトのtsconfig.jsonを生成します。
setupGasを走らせずにnpmInstallのタスクを走らせても事前にsetupGasが走るようにしているので問題なく動くはずです。
その後devディレクトリにTypeScriptファイルを配置して、npm_run_buildのタスクを走らせるかコンソールでnpm run buildするとdevディレクトリ内のファイルがコンパイルされてoutディレクトリ内にJSファイルが配置されるという流れです。
GoogleAppsScriptをアップロード
アップロードする際に適用されるスクリプト名はsettings.gradle内のrootProject.nameが使用されます。
各自で適切な名前に変更してください。
アップロードする際に必要なことはREADME.mdにも書いてあるとおりなのですが、プロジェクト内にclient_secret.jsonとmanifest.jsonを配置する、もしくはbuild.gradle内のgasUploadConfigurationsの中身を変更して適切なパスを指定してください。
uploadGasを走らせるとデフォルトのブラウザが開いて認証を求めてくるので、認めればアップロードされるはずです。
おまけ
プラグインの方ですが、Gradleのプラグインを作ったのがそもそも初めてなのでよくわかってないことが多く、また、スクリプトを使って設定できることも多くないのであとでしっかり作ったものをアップロードできるといいなぁと思いました。
完全に個人的な趣味でKotlinをJSにコンパイルできるので_サクッと楽に_ KotlinをつかってGoogleAppsScriptの開発ができるようになるところを目指しています。