使用setId()的Google Apps脚本列表框行为?

时间:2013-10-05 22:38:57

标签: google-apps-script

Google Apps脚本有点新鲜,但我看到listBox类似乎有些奇怪的行为。这是剧本的一个LARGER片段:

var storeNameHandler = app.createServerHandler("newStoreHandler");
var storeNameLabel = app.createHTML("<BR /><B>Which store or site:</B>");
var LB_storeName = app.createListBox().setId('storeName').setName('storeName');
LB_storeName.addChangeHandler(storeNameHandler);
// Get the stores on the budget sheet.
var stores = budgetSheet.getRange("H2:H").getValues();
// add items to ListBox
LB_storeName.addItem("");
LB_storeName.addItem("NEW STORE/SITE");
stores.forEach(function(item){
    if(item!="") LB_storeName.addItem(item);
});

这是onChange处理程序:

function newStoreHandler(e) {
  var app = UiApp.getActiveApplication();
  var storeNameListBox = app.getElementById('storeName');
  storeNameListBox.setVisible(false);
  var newStoreNameInput = app.getElementById('newStoreName');
  newStoreNameInput.setVisible(true);
}

我们的想法是让列表框消失,并且文本输入框出现在同一个地方(或者只是在下面,无论什么可能)onChange。我将向处理程序添加逻辑,以确定哪一个选项将导致列表框隐藏/输入揭示事件一旦我开始工作就会发生。

当我检查生成的列表框元素时,它会将 名称 显示为storeName但不显示ID。列表框按预期从电子表格中的数据中显示。 setId()方法不应将 id 标记添加到列表框,就像 name (见下文)?

inspect元素报告的列表框:

<select class="gwt-ListBox" name="storeName">
  <option value=""></option>
  <option value="NEW STORE/SITE">NEW STORE/SITE</option>
  <option value="Costco">Costco</option>
  <option value="Amazon.com">Amazon.com</option>
  <option value="Woot.com">Woot.com</option>
</select>

请注意明显缺少 id ,但显然正在设置 名称

1 个答案:

答案 0 :(得分:1)

这是我看到并期望来自UiApp的行为,因为Ui的html并非设计为在应用程序本身之外进行操作。因此,id对用户或应用程序开发人员没有意义。 如果您想要更好地控制应用程序的HTML,请避免使用UiApp(未进一步开发)。