2017-01-27 75 views
0

因此,採取看看這個網址後:Adding ItemsGoogle Apps Script .add Item遞歸?

的基礎是,我真的不能遞歸項目添加到一個新的菜單。我似乎已與下面的代碼一些進展:

function onOpen(e) { 
      var menu = SpreadsheetApp.getUi().createAddonMenu(); 
       var vendorsheet = SpreadsheetApp.openById('1Bt4s9aOfjkCyZRvHZMjMdntgID2VYF7Qzmjc7Z7YP1E') 

    for(var i = 2; i < 5; i++){ 
    var j = 4; 
    menu.addItem(String(vendorsheet.getRange('A'+ String(i)).getValue()),'Test') 

    if(i = j){ 
     menu.addItem(String(vendorsheet.getRange('A'+ String(i)).getValue()),'Test') 
    } else { 
     menu.addItem(String(vendorsheet.getRange('A'+ String(i)).getValue()),'Test') 
    } 
    } 



    menu.addToUi(); 
} 

只增加了兩個項目。看起來好像menu.addItem函數只爲每個調用添加一個項目。您不能使用for循環來遞歸調用它。如果有人能夠幫助我遞歸地添加「n」個項目,那麼對於任何可能會更好的n來說。謝謝。

+0

那不是遞歸,你的意思是反覆?你是在你的工作表中創建和加載項還是隻是一個菜單項? – corn3lius

+0

年,你是對的,它是迭代的。那麼現在沒關係,我只需要動態改變菜單。 –

回答

1

首先,你的代碼不是遞歸的。正如corn3lius所說的,這段代碼是迭代的。我很確定我知道爲什麼你的代碼出現故障。

你的if語句實際上是一個賦值語句。你想if (i == j)if (i = j)

編輯:

爲了澄清,爲什麼你只獲得了兩個項目:

1) i = 2  // You assign 2 to i 
2) addItem(...) // Entry one 
3) if (i = j) // This is actually considered a trueish statement and gives you your boolean true and sets i = 4 
4) addItem(...) // Second entry 
5) i++   // i is now equal to 5 
6) if (i < 5) // False, 5 == 5 not 5 < 5, exit the loop. 
+0

是的你是對的,謝謝你的幫助!常見的初學者錯誤。 –

相關問題