2012-11-19 63 views

回答

0

簡短的答案是否定的。

長(ER)的答案是,菜單項只能調用函數,所以沒有使用它顯示一個「國家」。不過,您可以想象在電子表格中使用某種標題,通過修改文本值或更改顏色來顯示某個函數已被調用,從而顯示您想要顯示的狀態。

我假設你的要求的最終目的是顯示如果一個函數被調用或不...如果我錯了,那麼請你解釋爲是你的意圖。

+0

對方的回答很聰明!我只是沒有想到這個伎倆!不錯;-) –

3

如果你真的想這樣做,也許你可以做一些笨重的像下面並調用updateMenu必要時添加複選標記。

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuEntries = [ {name: " item 1", functionName: "one"}, 
         {name: " item 2", functionName: "two"} ]; 
    ss.addMenu("myMenu", menuEntries); 
} 

function one() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    ss.updateMenu("myMenu", [ {name: "✓ item 1", functionName: "one"}, 
          {name: " item 2", functionName: "two"} ]); 
    // ... item 1 actions 
} 

function two() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    ss.updateMenu("myMenu", [ {name: " item 1", functionName: "one"}, 
          {name: "✓ item 2", functionName: "two"} ]); 
    // ... item 2 actions 
} 
0

我嘗試使用@KalyanReddy提供的答案,但遇到了問題,因爲電子表格UI壓縮了空格和修剪菜單名稱。通過試驗和錯誤,我找到了解決辦法。

Screenshot

這裏的生成複選框,排列的菜單效用函數:

/** 
* Make a checkbox menu item. Returns a string with the original text aligned to 
* leave room for a check mark. (Dependent on font, compatible with default 
* font used in Google Spreadsheets as of May 2013. YMMV.) 
* 
* @param {String} name Original item name 
* @param {boolean} check True if menu item should have a check mark 
* 
* From an idea by Kalyan Reddy, http://stackoverflow.com/a/13452486/1677912 
*/ 
function buildItemName(name, check) { 
    // Prepend with check+space, or EM Space 
    return (check ? "✓ " : "\u2003") + name; 
} 

要真正利用這一點,你應該寫跟蹤狀態和建立你的菜單項的單一功能通過調用buildItemName,每當狀態發生變化時將其稱爲& updateMenu()

相關問題