-1

私のUIは私のために機能します(私はスプレッドシートの所有者であり、スクリプトの作成者です)。ただし、スプレッドシートを他のユーザーと共有すると、UIが完全に表示されずuserAppPanel、docs.google.comからを開くか保存するように求められます。

スクリプトを次のように完全に削減しましたが、まだ運がありません。

function showDialog() {
    // Create the UI application
    var uiApp = UiApp.createApplication();

    // Provide the Popup with a title
    uiApp.setTitle('Parameter Collection Dialog');

    // Create an user instruction label
    var lblInstructions = uiApp.createLabel()
      .setText('Select a type of Person and Country');

    // Add the panel to the application
    uiApp.add(lblInstructions);

    // Show the application in the spreadsheet
    var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
    spreadSheet.show(uiApp);
}

UIは、スクリプトを試行するすべてのユーザーのスクリプトエディターから実行すると機能しますが、「スプレッドシートを開く」トリガーに接続すると、スクリプトは自分だけで機能し、他のユーザーは機能しません。

私は自分の要件を明確にすることに非常に近づいており、これは非常に苛立たしい最後のハードルです。

どうもありがとう

更新:解決策については私のコメントを参照してください。つまり、手動のonOpenトリガーではなくonOpen関数を使用します。

4

3 に答える 3

0

私は問題を再現しようとしましたが、簡単に再現できました。これはバグのようです。Issue Trackerで問題を開き、このスレッドをバグ番号で更新することをお勧めします。

于 2012-08-20T17:35:52.767 に答える
0

Srikを確認していただきありがとうございます。しかし、私は解決策を考え出しました:

スクリプトエディタを使用して、showDialog関数をOnOpenトリガーに手動で接続していました。ただし、showDialog()関数名をonOpen()に変更した場合、onOpenは組み込みのイベントであるため、関数をイベントに手動で接続する必要はなく、すべてのユーザーに対して機能するようになりました(共有ユーザー、およびログイン)。

両方の方法で機能するはずなので、私も問題を開きます。

私の解決策が他の人にも役立つことを願っています:)

于 2012-08-21T09:11:49.483 に答える
0

残念ながら、関数onOpenの名前を変更することによる回避策は、常に適用できるとは限りません。たとえば、関数を誰か(たとえば、自分自身)のIDで実行する必要がある場合などです。名前をonOpen()に変更すると、IDなしで実行されます。データベースへの認証が必要なため、これを行うことはできません。

これは、問題がスクリプトをトリガーした人の身元に関連していることを確認しているようです。

問題を投稿しましたか?リンクを教えていただけませんか?

于 2013-08-07T04:04:25.003 に答える