wata.dev

Google Apps Script API を使ってスクリプトを配布する

TL;DR

  • ワンクリックで、Google認証→ユーザのアカウントにスクリプトをインストール→Web Appとしてデプロイ、するWebページを作った
  • 公開ページ: https://wata.github.io/konjac-farm/
  • リポジトリ: https://github.com/wata/konjac-farm
  • ユーザーのスクリプトを操作するには、APIアクセスを有効にしてもらう必要がある
  • G Suite domain外に公開する際は、事前にアプリ審査を通る必要がある

(インストール成功時)

(インストール成功時)


仕組み

インストールボタン押下で、Google認証ダイアログでサインイン、パーミッションを取得し、Apps Script APIを使って以下を行います。

  1. 空プロジェクト作成(projects.create)
  2. プロジェクトファイルで更新(projects.updateContent)
  3. 公開バージョン作成(projects.versions.create)
  4. デプロイ(projects.deployments.create)

プロジェクトファイルを取得する

既存スクリプトのプロジェクトファイル(Code.gsやappsscript.jsonが含まれたファイル群)を取得するには、以下のURLからJSONでダウンロードします。Drive APIを使って取得してもいいかもしれません。

https://script.google.com/feeds/download/export?id={Script EditorページのURLに書かれたID(DriveのFile ID)}&format=json

公開

https://wata.github.io/konjac-farm/ では、マニフェストファイルにて、

  • 自分として実行
  • 公開(匿名ユーザ含む)

の設定で、Web App公開を指定しているので、最後に出力されたURLは、そのままcurlコマンドで試せるようになっています。

※URLの取り扱いに注意してください


注意点

1. Apps Script APIでユーザのスクリプトを操作するために、Apps Script DashboardにてAPIアクセスを有効にしてもらいます

デフォルトではAPIアクセスが出来なくなっているので、リクエストを投げてもエラーが返ることになります。ユーザーに明示的に許可してもらう必要があります。

Enabling script authorization and access | Apps Script API | Google Developers
To help reduce this risk, the Apps Script API cannot access your script projects by default. You must explicitly grant…

2. 未確認のOAuthクライアントは、「This app isn’t verified」という警告画面が表示され、インストールできるユーザー数に制限があります

警告画面、ユーザー数の制限を回避するためには、事前にGoogleの審査を通らなければいけません。具体的な作業として、

を行う必要があります。

ただし、個人利用やG Suite domain間の用途では必ずしも必要ではないようです。

OAuth Client Verification | Apps Script | Google Developers
If the app uses sensitive OAuth scopes, the unverified app screen may appear as part of the authorization flow. Its…


経緯

Google翻訳するVSCode拡張を公開する際、Google翻訳APIの従量課金を回避するために、Google Apps Scriptで作った翻訳APIを使う、という方法を考えました。

そこで問題になったのが、Google Apps Scriptの容量制限をどうやって回避するか😇

Google Apps Scriptを使うと、無料でサーバレスでWeb APIなど作れて便利ですが、例えば、外部URLを叩くようなスクリプトだと、URLFetchは20,000回/日という制限があります。

自分のアカウントで公開してしまうと破綻してしまうので、ユーザ自身がインストールして使うという、セルフホスティング翻訳APIを用意したのでした。

ブログの記事一覧