否则如果字符串匹配循环谷歌脚本(电子表格)

时间:2014-06-27 15:31:43

标签: google-apps-script google-sheets

我正在开发一个项目,我设计了一个自动填充共享电子表格中的单元格的结帐按钮。 我在“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;
}

任何帮助都将受到高度赞赏,这是我第一次在谷歌应用程序中编码,到目前为止我真的很喜欢它。 请给我一些想法。

1 个答案:

答案 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
    }
  }