update.Googleスプレッドシートのアドオンを公開した。日本語の情報があまりなく、ググった感じでは「スクリプトエディタからデプロイして完了!」と簡単そうに書いてあるが、実際は非常に苦労したので手順と注意点をまとめておく。ちなみに作成したアドオンはこちら。Scriptの2つのタイプがあるが、私が作ったのは後者のタイプ。それぞれの違いはここでは割愛するが、スプレッドシートのアドオンは後者で作った方が良いというのが私の結論。公式ドキュメントを貼っておく。Reviewを受ける(必要であれば)修正対応をする承認されて完了ざっとこんな感じ。英文でプライバシーポリシー!?と色々引っかかるところがあると思うが、実際に私はこの手順を踏んだ。想像以上に大変だった。簡単にアドオンが公開できるのであればやり方を教えて欲しいぐらいだ。一つ一つ解説していく。スクリプトを書くここは申請手順とは少し主旨が異なるが、スクリプトを自身のGoogleドキュメント内で動かすのと、アドオンとして公開するのとでは、いくつか挙動を変える必要があるので触れておく。Authorizationアドオンの利用シーンとしては、例えば次のようなものが考えられる。インストールし、その直後に使用している以前にインストールしており、現在のスプレッドシートでは使用していないこの1と2のケースでは、AuthModeが異なる。2ではAuthModeがNONEになっている。この状態だと使用できる機能に制約がかかり、不用意にグローバルスコープで何かを呼び出すとエラーになるので注意しよう。次のように、AuthModeがNONEのときは、アドオンを有効にする機能しか使えないようにするのが良いと思う。triggersはアドオンで使用されることが多いと思うが、使い方に注意が必要だ。新しいトリガーを追加"とクリックして、関数を選ぶだけで良かったが、アドオンの場合はコードに組み込む必要がある。setDailyTiggers()};簡単に解説すると、まずcreateTimeDrivenTriggersという毎日深夜1時起動のトリガーを設定する関数を用意する。それを実行する前に、もし既存のトリガーがあれば削除をするようにしている。これはinitが実行される度にトリガーが蓄積されていくのを防ぐためだ。アドオンではトリガーの種類も一つだけにしなければならない。これをしないと審査に引っかかるので注意が必要だ。公式ドキュメントは下記。Triggers処理速度を早くこれはアドオンに限ったことではないが、処理速度を最大限に速くしておいた方がよい。ScriptのAPIをなるべく呼び出さないということだ。いくつかテクニックを紹介する。シートの取得これはGASでSpreadsheetを操作する自分的ベストプラクティスで紹介されていたものだが、とても重要だ。下記はscheduleというシートを取得しようとしているが、初めの一回だけAPIを呼べばよい。getScheduleSheet.s_sheet;};列の幅を変更する例えば、列1から列100までの幅を10に変更するときに、APIのsetColumnWidthを素直に使えばこのようになる。};};ただ、これだとsetColumnWidthが100回呼び出されることになり、速度が落ちる。そこで使えるのがinsertColumnsAfterだ。次のようにすると、挿入するcolumnは1列目の幅を引き継ぐので、APIの呼び出しが3回で完結する。//1列目以降に99列挿入する他にも色々と工夫したところがあるが、説明するのが大変なので割愛する。興味がある人はコードを公開しているので、そちらを参照してもらいたい。clientのVerificationを申請Verificationがなければ、アドオンの審査に入ってもらえない為、まずこれを終わらせなければならない。詳しい手順はやはり公式ドキュメントを参照するのが良いと思う。英語だが事細かに説明してくれている。Consoleで所有権が確認されたドメイン”だ。私は当初はてなブログにアドオンを説明する記事を書いて、それをVerificationの申請に使おうとしたが、なんとはてなのログイン画面の「Google+でログイン」の部分がGoogleのデザイン規定に引っかかりNGになってしまった。Sitesでアドオン用に簡易のホームページを作ることにした。Policyだが、これは本格的なものを用意しなくても良さそうだ。このページの一番下にあるのが実際に申請に使ったもの。本当に一般的なことしか書いていないが、これで承認が出た。適当に改変して使ってもらって構わない。AuthorizationのスコープVerification申請で一番厄介だったのがこれだ。申請のなかで求めているAuthorizationのスコープに対しての使用目的を明示しなければいけない。言って、どのAuthorizationが何を許してくれるかが明確ではないので、何を書いたらよいのか非常にわかりずらい。app.これが公式ドキュメントの例だ。ここに関しては、スコープと申請内容が合っていなければ、Googleが指摘をしてくれるので、申請に通るまで何度かチャレンジするのが現実的だと思う。僕も一度目は弾かれてしまったが、指摘内容に合わせて書き直して、二回目で承認が出た。テストVerificationの申請には数日を要するので、その間にリリース前のテストをしてしまおう。やり方は下記の2つがある。スクリプトエディアから"アドオンとしてテスト"を実行アドオンを非公開でデプロイし、テスターユーザーアカウントでテスト個人的には2のやり方がお薦めだ。1は機能が限定的になってしまい、実のところあまり参考にならない。気軽に出来るのが1の唯一のメリットなので、1で表面的なバグを直し、2でじっくりテストするのが良いと思う。2は実質的にデプロイの過程を踏まなければいけないので、少し面倒なのだ。テストは実際のユースケース沿って行うのがベターであるが、簡単にそれが再現できないものがある。実際に僕がハマったものは、タイムゾーンである。Advisorがどのタイムゾーンからアクセスするか不明なので、PCのシステム時刻、スプレッドシートのタイムゾーン設定などを考慮して実装しておかないとバグになりやすい。私の場合は、Googleカレンダーから日本の祝日を自動取得していたのだが、これはGoogleアカウントが日本で設定されていないと、日本の祝日が参照できずにエラーになってしまう。Advisorが実行するとエラーになっていた。スクリプトエディタからデプロイここは表示される手順に沿って情報を入力していくだけなのだが、いくつか注意点がある。tip」が適切でないと複数回の指摘を受けた。これが「インストール後のヒント」のことを指しているのだが、どう直して良いのかさっぱり分からず非常に困った。これが審査に落ちたもの。個人的にはシンプルだが十分にインストール後の動作を指示していると思う。Chart."次が審査に通ったもの。schedule.どうやらポイントは、「>」を使って、クリックすべきメニューの場所を示すことにあるようだ。ロゴ等の画像アドオンの公開には下記の画像を(3つも!)用意する必要がある。サイズが異なるとNGなので注意が必要だ。ピクセルデザインにこだわりがある人は時間をかけるポイントだと思うが、僕はフリーツールを使って、簡単に済ましてすまった。←こういうまとめから自分の用途に合うサービスを使って、簡易に行うのは個人的には有りだと思う。非公開でデプロイ上記でも触れたが、初めは一般公開をせず、非公開にしてテストをするようにしよう。デベロッパーアカウントから”テスターアカウントを編集”が実行できるので、自分のサブアカウントなどを登録するのが良いだろう。すると、非公開でもテストアカウントであればインストールが可能になる。Advisorから改善依頼の連絡が来る。ここはさすがGoogle、Googleドキュメントを使って、改善のコミュニケーションをするようになっている。共同編集ができるので質問もしやすい(答えてくれるかは別だが)。tipとタイムゾーンで盛大にハマってしまった。皆さんのご健闘をお祈りする。Advisorの承認が降りれば、晴れて完了だ。ああ、疲れた...!終わりにというわけで、これがアドオンのリリース手順だ。関わらず、課金システムがデフォルトでついていないため、有料アドオンにしようと思うと、さらに面倒なことをしなければいけない。一方で、サーバーまわりのメンテナンスが一切不要なのは魅力的だと思う。いう目的でアドオンを開発するかにもよるが、Googleのプラットフォームに自分の開発したコードが載るのは嬉しいものだ。Scriptを書いている人は、よければ一般公開してみてはどうだろうか。upLoginユーザーは見つかりませんでした。