2

現在、オフィスで使用する Google スプレッドシート アドオンを作成しようとしています。マーケットプレイスで非公開で公開し、ドメイン全体に配布する作業を行いましたが、メニュー項目が適切に追加されないという問題に直面しています。私は AuthMode について読んできましたが、私が理解していることから、私のユーザーはすべて最初は AuthMode.NONE になり、単純なメニューを追加できるはずです。「シンプルなメニュー」に対する私の理解が違うのかもしれません。すべてのコンピューターを ChromeOS に切り替える前に、1 週間以内にこれを機能させる必要があります (私の決定ではなく、IT の決定です)。

これが、関連するすべてのコードであると私が想定しているものです。各関数も適切に定義されています。

function onOpen(e) {
    SpreadsheetApp.getUi().createAddonMenu('Usage Macros')
        .addItem('Summarize', 'firstRun')
        .addSubMenu(SpreadsheetApp.getUi().createAddonMenu('Rate')
            .addItem('PG&E', 'pge')
            .addItem('CARE', 'care'))
        .addSubMenu(SpreadsheetApp.getUi().createAddonMenu('Proposal Type')
            .addItem('SunRun 0%', 'sunRun0')
            .addItem('SunRun 1.9%', 'sunRun19')
            .addItem('SunRun 2.5%', 'sunRun25')
            .addItem('SunRun 2.9%', 'sunRun29')
            .addItem('SunRun 3.5%', 'sunRun35')
            .addItem('SunPower 0%', 'sunPower0')
            .addItem('SunPower 2%', 'sunPower2')
            .addItem('SunNova 0%', 'sunNova0')
            .addItem('SunNova 0.9%', 'sunNova09')
            .addItem('SunNova 1.9%', 'sunNova19')
            .addItem('SunNova 2.9%', 'sunNova29')
            .addItem('Cash', 'cash')
            .addItem('GreenSky', 'greenSky')
            .addItem('EnerBank', 'enerBank'))
        .addItem('Finalize','kleanUp')
        .addToUi();
}

function onInstall(e) {
    onOpen(e);
}

また、"Summarize" メニュー項目と "firstRun" が追加されたのは、もともと onOpen 関数が他の 2 つの関数を呼び出して、書式設定を変更し、開いているドキュメントから不要な情報を切り取ったためです。私はそれを onOpen から削除し、それらのメニュー項目を追加しました。残念ながらそうではありませんでした。

4

2 に答える 2

1

ドキュメントに基づいて:

アドオンが上記の createMenu(name) 構文を使用してトップレベル メニューを作成しようとすると、name 引数は無視され、スクリプトには、アドオンの公開された名前の下のアドオン メニューのエントリが与えられます。

ここで私があなたのコードに行ったこと:

createAddonMenu()の使用

function onOpen(e) {
var menu = SpreadsheetApp.getUi().createAddonMenu()

menu.addItem('Summarize', 'firstRun')
.addSubMenu(menu
.addItem('PG&E', 'pge')
.addItem('CARE', 'care'))
.addSubMenu(menu
.addItem('SunRun 0%', 'sunRun0')
.addItem('SunRun 1.9%', 'sunRun19')
.addItem('SunRun 2.5%', 'sunRun25')
.addItem('SunRun 2.9%', 'sunRun29')
.addItem('SunRun 3.5%', 'sunRun35')
.addItem('SunPower 0%', 'sunPower0')
.addItem('SunPower 2%', 'sunPower2')
.addItem('SunNova 0%', 'sunNova0')
.addItem('SunNova 0.9%', 'sunNova09')
.addItem('SunNova 1.9%', 'sunNova19')
.addItem('SunNova 2.9%', 'sunNova29')
.addItem('Cash', 'cash')
.addItem('GreenSky', 'greenSky')
.addItem('EnerBank', 'enerBank'))
.addItem('Finalize','kleanUp')
.addToUi();
}

結果

ここに画像の説明を入力

createMenu()の使用

function onOpen(e) {
var menu = SpreadsheetApp.getUi()

menu.createMenu('Usage Macros')
.addItem('Summarize', 'firstRun')
.addSubMenu(menu.createMenu('Rate')
.addItem('PG&E', 'pge')
.addItem('CARE', 'care'))
.addSubMenu(menu.createMenu('Proposal Type')
.addItem('SunRun 0%', 'sunRun0')
.addItem('SunRun 1.9%', 'sunRun19')
.addItem('SunRun 2.5%', 'sunRun25')
.addItem('SunRun 2.9%', 'sunRun29')
.addItem('SunRun 3.5%', 'sunRun35')
.addItem('SunPower 0%', 'sunPower0')
.addItem('SunPower 2%', 'sunPower2')
.addItem('SunNova 0%', 'sunNova0')
.addItem('SunNova 0.9%', 'sunNova09')
.addItem('SunNova 1.9%', 'sunNova19')
.addItem('SunNova 2.9%', 'sunNova29')
.addItem('Cash', 'cash')
.addItem('GreenSky', 'greenSky')
.addItem('EnerBank', 'enerBank'))
.addItem('Finalize','kleanUp')
.addToUi();
}

結果

ここに画像の説明を入力 ここに画像の説明を入力

お役に立てれば!

于 2016-07-10T13:04:54.657 に答える