LoginSignup
8
3

More than 5 years have passed since last update.

Google Spread Sheetに紐付いたGoogle Apps Scriptの更新をclaspでするときにglobal関数の追加が反映されない

Last updated at Posted at 2018-04-12

claspとは

これまでGoogle Spread Sheetに紐付いたGoogle Apps Scriptの更新はオンラインエディタ以外の方法で更新することができなかった。

google/clasp

はそれを解決するツールだ。2018年1月だから比較的最近だ(執筆時2018年4月)

Google Apps Script をローカル環境で快適に開発するためのテンプレートを作りました
なんていう記事も出ている。

Google Apps Scriptの制約

まあ上げだせばきりがないが、最大の制約は、呼び出し可能な関数が

function foo(){}

のようにfunctionキーワードを用いてglobalスコープで定義された関数しか呼び出せない。

当然Google Spread Sheetに紐付いたGoogle Apps Scriptでも同じで、そうでないとGoogle Spread Sheetから呼び出せない。

上の記事のテンプレートではgas-webpack-pluginを用いてこれを回避している。

gas-webpack-plugin

function foo(){}

のように、functionキーワードを用いて空っぽの関数を定義し、あとでglobal変数経由で実装を挿入するということをやってくれる。

さあ、clasp pushすればGoogle Spread Sheetからこの関数を呼び出せるはずだ。

Google Spread Sheetから呼び出せない

ところがそうは問屋がおろさない。

どうも関数名をGoogle Spread Sheet側でキャッシュしているらしく、clasp pushしてもこのキャッシュが更新されない。反映するにはオンラインエディタを開いてどうでもいい編集をして一度保存する必要がある

UML sequence

雑にUMLのシーケンス図を書くとこんな感じ?(想像です)

Issue投げた

Adding global function is not reflected to Google Spread Sheet by clasp push to Apps Script bounded with Google Spread Sheet · Issue #108 · google/clasp

いや、Issueのタイトルからもう英語崩壊しとるから。もうちょっと英語力をですね・・・

License

CC BY 4.0

CC-BY icon.svg

8
3
1

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
8
3