向Google Sheets中的特定列添加响应值



我想将UI提示中的响应添加到一系列列中的下一个可用空单元格中。

最多将有4个值需要分配给指定的单元格。现在,如果我使用appendRow,我可以让我的脚本发挥作用。我试图使用setValue,但似乎语法有误。我无法让它从我在脚本中定义的响应中提取值。

我想把来自一个UI的响应放在F:I列中可用的下一个空单元格中,把来自另一个用户界面的响应放到L:M列中。这些都是文本回复。

举个例子,这基本上就是我要完成的减去appendRow函数的内容:

function addData() {
var ui = SpreadsheetApp.getUi(); //get user interface
var ss = SpreadsheetApp.getActiveSpreadsheet(); //assign active spreadsheet to variable
var result = ui.prompt(
'Add Data',
'Please enter Data',
ui.ButtonSet.OK); //opens up dialogue box with prompts        
var button = result.getSelectedButton(); //gets users button click
var text = result.getResponseText(); //gets users input
if (button == ui.Button.OK) {
var result2 = ui.prompt(
'Enter Base Data',
'Data:',
ui.ButtonSet.OK_CANCEL); //opens up second prompt if user clicked OK
var button2 = result2.getSelectedButton(); //gets users button click
var text2 = result2.getResponseText(); //gets users input
if (button2 == ui.Button.OK) {
var result3 = ui.prompt(
'Enter Input',
'Input:',
ui.ButtonSet.OK_CANCEL); //opens up third prompt for Input
var button3 = result3.getSelectedButton(); //gets users button click
var text3 = result3.getResponseText(); //gets users input
}
if (button3 == ui.Button.OK) {
var result4 = ui.prompt(
'Enter Summary',
'Summary:',
ui.ButtonSet.OK_CANCEL); //opens up fourth prompt for Summary
var button4 = result4.getSelectedButton(); //gets users button click
var text4 = result4.getResponseText(); //gets users input

var sheet = SpreadsheetApp.getActiveSheet(); //opens sheet
sheet.appendRow([text, text2, text3, text4]); //adds row with user input values

}else if (button4 == ui.Button.CANCEL) {
// user clicked "Cancel"
ui.alert('Cancelled Data addition.')
} else if (button3 == ui.Button.CANCEL) {
ui.alert('Cancelled Data addition.'); //alert if cancelled
}
} else if (button2 == ui.Button.CANCEL) {
// user clicked "Cancel".
ui.alert('Cancelled Data addition.'); //alert if cancelled
} else if (button == ui.Button.CLOSE) {
// user clicked 'X' in the title bar.
ui.alert('Dialogue box was closed.'); //alert if closed
}
}

任何想法都将不胜感激。它根本不必与上面的示例匹配,只要它捕获响应并将数据记录在指定范围内的空单元格中即可。

提前谢谢。我已经觉得必须问很傻了,但我遇到的任何问题都不符合我的需求,当我尝试我认为应该有效的东西时,我会收到语法错误。

我最近也遇到了同样的问题:这就是为什么我制作了一些函数助手来简化它。您需要创建一个新的文件.gs并复制粘贴它,才能使用该实用程序的功能:https://github.com/SolannP/UtilsAppSsript/blob/main/UtilsGSheetTableHelper.gs

然后你可以简单地更新如下:

if (button3 == ui.Button.OK) {
var result4 = ui.prompt('Enter Summary','Summary:', ui.ButtonSet.OK_CANCEL); 
//opens up fourth prompt for Summary
var button4 = result4.getSelectedButton(); 
//gets users button click
var text4 = result4.getResponseText(); 
//init all the cells as range close to A1 having data (not empty)
var rangeTable = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1").getDataRegion();
var tableHandler = new TableWithHeaderHelper(rangeTable)
tableHandler.addRawArrayEntry([text, text2, text3, text4]); //add row at the end of the table

}
else if(....

请注意,我们表格的列总数必须与要添加的值相同。

>列D1标题👍td>
列A1列B1列C1E1
标题XX标题YY
12341232
99421234

最新更新