私は自分の会社のために簡単なアドオンを作成しました。アドオンは呼び出されると現在のシートを見て、すべてのセルを指定された用語集の対応する値に置き換えます。Google Appsシートのアドオンで外部シートを読み込み
など、「321_name」で「名前」を置き換えます
これを行うために、私は地元を使用たとえば、値「ブランド」ですべてのセルを見つけるだろう、と「123_brand」に置き換えます(「第2列は「123_brand」、「321_name」などがあり、第1列には「Brand」、「Name」などがあります)。私の会社のすべてのメンバーは、そのシートに対して読者の承認を得ています。
私は、次の方法でそれをロードします。
function onOpen() {
SpreadsheetApp.getUi().createAddonMenu()
.addItem('Parse sheet', 'parseSheet')
.addToUi();
}
function onInstall(){
onOpen();
}
var librarySpreadsheet = SpreadsheetApp.openById("ID to my Glossary Sheet");
function parseSheet(){
/* Does the sheet parsing */
}
問題がある:それは動作しません。
インストール直後に、「Parse Sheet」ボタンが正常に表示され、すべて正常に機能します。しかし、ユーザーが別のシートに行くと、アドオンはそこで動作しません。コンソールを確認すると、次のメッセージが表示されます。
Google Appsスクリプト:この操作を実行する権限がありません。
ユーザーが他のシートのアドオンを削除して再インストールすると、正常に動作します。
代わりに編集権限を与えようとしましたが、それでも機能しません。これはすべてのユーザーに適用されます。
アドオンが外部スプレッドシートへのアクセスを拒否されているのはなぜですか?
var librarySpreadsheet = SpreadsheetApp.openById("ID to my Glossary Sheet");
これはあなたの関数内で宣言されていない、すなわちグローバルdelcarationです:
私はそれが "認証モード"と関係があると推測しています。引用:***アドオンがストアからインストールされると、そのonInstall(e)関数はAuthMode.FULLで実行されます。***アドオンがインストールされた後、AuthModeが変更されることがあります。 [Add-on Authorization Lifecycleへのリンク](https://developers.google.com/apps-script/add-ons/lifecycle)を読んだことがあります –
アドオンが機能しないと言うときは、アドオンメニューのこの特定のアドオンを参照してください? –
@JackBrown私はアドオンメニューにアドオンが表示されていることを意味しますが、その機能はありません。ちょうど "ヘルプ" –