2016-12-30 22 views
3

SpreadsheetApp.AddMenu(名前、配列の配列)は、スプレッドシートの上部バーに新しいメニューを作成します。あるいは、項目の配列になるgetUI.createMenuがあります。両方ともうまくいくが、どれが良いかわからない。SpreadsheetApp.addMenuを無効にする方法

アクティブなシートの種類によって、メニューエントリの一部を無効にして有効にすることはできますか?

特定のシートがいつアクティブになるかを確認する手段はありますか?そうでない場合は、特定のシートにユーザーが変更された場合にのみ無効にする必要があるメニュー項目が有効になっている必要があるため、onChangeイベントまたはonEditイベントを処理できます。

答えて

3

スクリプトは、getActiveSheetを呼び出すことで、現在アクティブなシートを見つけることができます。しかし、ユーザーがあるシートから別のシートに切り替えるときに起動するトリガはありません。これは編集または変更とはみなされません。質問に記載されているプラ​​ンBを参照してください。編集/変更時にアクティブシートを検出します。

Googleドキュメントの旧バージョンでは、.addMenuの構文しか使用できませんでした。 getUI().createMenu()を添加した場合、古い方法は互換性のために維持された。古いものは構文が単純ですが、新しいメソッドにはセパレータやサブメニューの追加など、より多くのオプションがあります。 What is the difference between creating a menu with .getUI().createMenu() and .addMenu()?

カスタムメニューの項目を無効にすることはできません。代わりに、ユーザーが現在のコンテキストでは利用できないオプションを呼び出そうとすると、toastのようなあまりにも煩わしくないメッセージを表示して、そのことを通知することができます。

関連する問題