使用Google Scripts中的JavaScript将信息传输到电子表格,但电子表格显示未定义

时间:2014-08-15 23:58:58

标签: javascript google-apps-script google-sheets undefined

我正在使用Google Scripts UiApp来收集可用性信息。我想将此信息发送到电子表格。我在这里使用了这个例子:http://www.googleappsscript.org/advanced-examples/insert-data-in-sheet-using-ui-forms 让我开始朝着正确的方向前进。

Web App看起来不错,点击提交时会显示相应的消息。但是,传输到电子表格的值对所有条目都说“未定义”。

如何说服它将文本框输入的数据链接到变量,以便我可以转移到电子表格?

谢谢!

以下是一些代码:

var submissioSSKey = // Key removed

function doGet() {
var rows = 15
var columns = 15
var mygrid = UiApp.createApplication().setTitle("MLC Walk Ins Scheduling")
var panel = mygrid.createSimplePanel();

// Define the grid layout
var grid = mygrid.createGrid(rows, columns).setCellPadding(2).setCellSpacing(8)

// Create the text at the top
var Title = mygrid.createLabel("Walk-In Scheduling")
grid.setWidget(1, 1, Title)

(剪辑) - 创建各种复选框和文本框

  var text1 = mygrid.createTextBox().setName('name1')
  grid.setWidget(3,9,text1)
  var text6 = mygrid.createTextBox().setName('message1')
  grid.setWidget(4,9,text6)
// Create the "submit" button
 var submit_button = mygrid.createButton("Submit")
grid.setWidget(12,9,submit_button)

 var infoLabel = mygrid.createLabel('Availability inserted    successfully.').setVisible(false).setId('info');
 grid.setWidget(13,9,infoLabel)

var handler = mygrid.createServerClickHandler('insertInSS');
handler.addCallbackElement(panel);
submit_button.addClickHandler(handler);  

panel.add(grid);
mygrid.add(panel);
mygrid.add(grid);
return mygrid
}

然后函数调用按钮:

//Function to insert data in the sheet on clicking the submit button
function insertInSS(e){
var mygrid = UiApp.getActiveApplication()
var name1 = e.parameter.name1
var message1 = e.parameter.message1
 mygrid.getElementById('info').setVisible(true).setStyleAttribute('color','blue')

var sheet = SpreadsheetApp.openById(submissioSSKey).getActiveSheet()
var lastRow = sheet.getLastRow()
var targetRange = sheet.getRange(lastRow+1, 1, 1, 2).setValues([[name1,message1]])

return mygrid
}

1 个答案:

答案 0 :(得分:0)

啊!一个简单的解决方案让人头疼。

我有一个额外的一行:

mygrid.add(grid);

这打破了它。