2019年4月以前に作成したGASのアドオンをアップデートする時に気をつけること

約3年前に公開したGoogleスプレッドシートのアドオンをアップデートしようと思ったのですが、Googleの仕様が大きく変わっていて戸惑ったので（というか盛大に事故ったので）、その時の学びをまとめておきたいと思います。あまり該当者は大きくないと思いますが、その分情報がネット上になかったので、誰かの役に立てば幸いです。

## 結論
**Default GCP project から Standard GCP project  へ安易にスイッチしないこと！！**
とにかく上記に尽きます。私はこれによって、Google Workspace Marketplace のURLが変わり、これまでのレビューとユーザーを失うというとんでもない事態に陥りました（ユーザーの皆様には再インストールをお願いすることになり申し訳ありませんでした）。本当に必要に迫られたとき以外はDefault GCP projectのままアドオンを運用することをお薦めします。以下、なぜ僕がスイッチをしたかとそれによって何が起きたかを記録しておきます。

## えっ？だってStandard GCP projectにしろって書いてあるよ？
>When you build your add-on in Apps Script, a default Google Cloud Platform (GCP) project is automatically created for it. However, you can’t use the default GCP project to publish your app. Instead, use the steps below to create a standard GCP project

[Publish an add-on - Create a standard Google Cloud Platform project](https://developers.google.com/workspace/add-ons/how-tos/publish-add-on-overview#create_a_standard_google_cloud_platform_project) には上記のように書いてあります。数年前にアドオンを開発していた人にとっては、「えっ、GASのアドオンにGCPのコンソールから色々作業しないといけないの？」という感じではないでしょうか。GCPの知識がなかった私はとりあえずDefaultとStandardの違いを調べてみました。


>Default Cloud Platform projects are the best option for most script projects, as they are the easiest to use. However, default GCP projects can't be used for certain cases that might require you to manually configure the GCP project. In these situations, you must switch your script project to use a standard GCP project.

>When standard GCP projects are required
- When you wish to publish your script project as an add-on in the Google Workspace Marketplace.

[Google Cloud Platform Projects](https://developers.google.com/apps-script/guides/cloud-platform-projects#when_standard_gcp_projects_are_required) には上記のように書いてあります。「うーむ、これはいよいよ本当にプロジェクトを切り替える必要がありそうだ」...そんな風に思っている時期が私にもありました。ググってみると先駆者らしき人の記事も見つかります → [GASの実行可能APIとして公開の手順変更で少し焦った話](https://for-dummies.net/gas-noobs/how-to-deploy-as-an-excutable-api-by-gas/)。「これはやはりやるしかないか」、私はスイッチすることをここで決めました。

## Standard GCP projectにして起きたこと
>1. You lose any data tied to advanced services that you enabled for that script (because advanced services rely on the GCP project).
2. All users who have previously authorized the script must re-authorize. In most cases, all users who have previously authorized apps associated with the new GCP project must also re-authorize.

元々このように書いてあって、2の方は影響が大きいなあと思っていたのですが、既にアドオンをインストールしているユーザーにも影響があるとは思っていませんでした。えいっとスイッチのボタンをポチったことによって、既存ユーザーの全てに Unverified App Screenが表示されるようになってしまいました。

![unverified-app-screen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147086/923cf5ef-ca91-2471-203b-914f44864a84.png)

Unverified App Screen は、ユーザー自身が望めば引き続き利用が可能なのですが、その状態で利用できるユーザーは上限が100人までと決まっています。これが時限爆弾のようにジリジリとカウントアップされていくのはなかなかの焦りを生みました。そしてあっという間に上限まで埋まりました。やばい。

![スクリーンショット 2021-02-20 21.45.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147086/c0447a4e-c9f4-fb6a-6502-521cdc8f7cf2.png)

そしてさらには、Google Workspace Marketplaceにアドオンのページは変わらず存在して、インストールボタンをクリックすることが出来るにも関わらず、インストールが正常に完了しない事態になっていました。「やばい、詰んだ」、まさにそんな状況に陥ってしまいました。

## そこからどうした？
日本語でも英語でもググってみたのですが、リカバリーできるやり方が見つからず、藁にもすがる思いでstackoverflowに投稿してみました → [How to update a Spreadsheet add-on made in a default GCP project?](https://stackoverflow.com/questions/66154033/how-to-update-a-spreadsheet-add-on-made-in-a-default-gcp-project/66176087#66176087)。すると、Technical Support Engineer (Google Workspace APIs & Google Apps Script)のプロフィールの方からコメントが。
>I don't think what you want to do is possible. The listing URL is automatically generated and based on the project number so, for a different project, it would be a different URL.

とのこと。これで薄々は気づいていたのですが、復旧は出来ないことを受け入れました。なので、シンプルに新しいGCP Standard projectの元でOAuth認証の申請、アドオンのレビューと最初から公開までのステップを踏み、新しいURLで公開できたタイミングで、泣く泣く古いページを非公開にしました。

## じゃあ結局どうすれば良かったの？
自分が回避できているわけではないので、あくまで想像になるのですが、 [Update and manage your published add-on](https://developers.google.com/workspace/add-ons/how-tos/update-published-add-on) のページのやり方で普通にアップデートできるのではないかと考えています。もしこの手順通りにやってGCPのProjectのタイプが原因でアップデートができないのであれば、私と同じ運命を辿る可能性が出てきてしまいます。そうならないことをお祈りしつつ、とにかくまずはDefault projectのままアップデートするやり方を模索することをお薦めします。もしどうしてもStandard projectに移行するのであれば、先にOAuth認証の確認を終わらしておいた方が良いです。そうすれば少なくともUnverified App Screenが既存ユーザーに出ることは防げると思います（※全く同じスコープで申請を出している必要はありますが）。


## 終わり
というわけで、大変な目に遭いながらなんとかアドオンのアップデートを終えることができました。改めまして、既存のユーザーの方々にはご迷惑をおかけして申し訳ありませんでした。。。そんな苦難を経てアップデートできたアドオンはこちらになります。ガントチャートをGoogleスプレッドシートで自動的に作るツールです。もし良かったらご利用ください。

- [ガントチャート・ジェネレーター](https://workspace.google.com/marketplace/app/%E3%82%AC%E3%83%B3%E3%83%88%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E3%83%BB%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC/597114635116)