我正在开发一个项目,我设计了一个自动填充共享电子表格中的单元格的结帐按钮。 我在“else if”循环中遇到逻辑问题。我想有一个UI,告诉用户何时字符串不匹配。到目前为止,我能够为我的电子表格创建菜单,提示和匹配函数,但我仍然停留在返回未找到消息的else if语句中。
if (button == ui.Button.OK)
{
text = result.getResponseText().toUpperCase();
for(n=0;n<data.length;++n)
{ // iterate row by row and examine data in column A
if(data[n][0].toString().match(text)==text)
{
data[n][13] = newDate;
data[n][14] = newTime;
data[n][15] = 'YES';
data[n][16] = 'YES';
//data[n][0] = data[n][0].setBackgroundColor('red');
var result2 = ui2.prompt(
'Checkout process in progess',
'Please enter yout initials: (eg. MR)',
ui2.ButtonSet.OK);
var text2 = result2.getResponseText().toUpperCase();
data[n][17] = text2;
}
Logger.log(data)
sh.getRange(1,1,data.length,data[0].length).setValues(data); // write back to the sheet
}
}
这是我为UI提示编写的代码,但是当我在for循环中使用它时,它会在每个循环中运行,而不仅仅是当我到达行的末尾时。
else if(data[n][0].toString().match(text) != text)
{
ui.alert('room number not found; please fill in manually.');
break;
}
任何帮助都将受到高度赞赏,这是我第一次在谷歌应用程序中编码,到目前为止我真的很喜欢它。 请给我一些想法。
答案 0 :(得分:0)
如果您显示整个代码会更容易,但我认为您甚至不需要使用else if
语句,因为您只有一个条件就可以使用简单的else
单一价值。
除此之外,您还需要另一种方法来设置背景颜色:您使用的数组只有电子表格值,它不再是范围对象......我建议使用第二个数组backGroundColors并更新值是该数组。
代码就像这样:
var BgColors = sheet.getDataRange().getBackGroundColors();
if (button == ui.Button.OK){
text = result.getResponseText().toUpperCase();
for(n=0;n<data.length;++n){
// iterate row by row and examine data in column A
if(data[n][0].toString().match(text)==text){
data[n][13] = newDate;
data[n][14] = newTime;
data[n][15] = 'YES';
data[n][16] = 'YES';
BgColors[n][0] = '#ff0000';// update color
var result2 = ui2.prompt(
'Checkout process in progess',
'Please enter yout initials: (eg. MR)',
ui2.ButtonSet.OK);
var text2 = result2.getResponseText().toUpperCase();
data[n][17] = text2;
}else{
ui.alert('room number not found; please fill in manually.');
break;
}
Logger.log(data)
sh.getRange(1,1,data.length,data[0].length).setValues(data); // write back to the sheet
sh.getRange(1,1,BgColors.length,BgColors[0].length).setBackGroundColors(BgColors); // write back to the sheet
}
}