2017-10-02 13 views
1

私は、Googleスプレッド内に従業員レコードを処理するために後で使用するために、作業ディレクトリをリストし、そのユーザーの電子メールアドレスをプルするメニューをGoogleスプレッドに作成しています。私は、スプレッドシートを開いたときに、私が欲しいものである、以下、項目はすぐにトリガ、私は結果を得る、今Googleスプレッドシートのカスタムメニューで変数を機能させることはできますか?

function onOpen() { 
    var ui = SpreadsheetApp.getUi(); 
    // Or DocumentApp or FormApp. 
    var myapp = ui.createMenu('MyApp'); 
    var pullemp = myapp.addSubMenu(ui.createMenu('Pull Employee') 
      .addItem('Nathaniel MacIver', menuItem2('[email protected]'))); 
    myap.addToUi(); 
} 

function menuItem2(email) { 
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp. 
    .alert('That email address is '+email); 
} 

私はそれがこのように動作するように取得しようとしていますenter image description here

しかし、私はメニューのボタンをクリックするとトリガーしたい。

enter image description here

私はリンクが、関数名が文字列値であることが必要であると述べて知っているが、なぜそれがonloadイベント私が必要として動作します:それはあるので、私は私のメニューボタンをクリックしたとき、私はエラーを取得します私はボタンを押すと失敗します。あなたは

.addItem('Nathaniel MacIver', menuItem2('[email protected]')) 

menuItem2は、パラメータ「[email protected]」で呼び出される関数でメニュー項目を作成

+1

メニュー項目にパラメータを持つ関数を使用することはできません。 – Cooper

答えて

0

。この結果、警告が表示されます。関数の戻り値は未定義です(何も返さないため)。だから、同じメニュー項目で終わるのと同じメニュー項目になります。

.addItem('Nathaniel MacIver', undefined) 

明らかに何もしません。

method addItemは関数名のみをとりますが、その関数にパラメータを渡すことはできません。あなたが望むことをするためには、それぞれの人のために別々の機能が必要です。それぞれの機能は、その機能の中に電子メールでハードコードされています。

+0

それは私が考えたものです。あなたが私に尋ねるならば、かなりばかげています。その代わりに、シートにドロップダウンメニューを作成し、実行時に選択した値を収集する関数を使用しようとしています。ありがとうミシェル! –

関連する問題