首页 > 解决方案 > 验证 Google App Script 中的特定字符串

问题描述

情况:

大家好!我有一个包含两个选项卡(“今天”和“当前”)的 Google 电子表格,我想验证“今天”选项卡中最后一行和 C 列的单元格中的值(例如 C50 或 C100,行号可能change) 是否等于字符串“ERROR”。如果此单元格包含字符串“ERROR”,它将从“当前”选项卡中复制 A2:J2 单元格中的数据,并替换“今天”中的“错误”字符串。


问题:

因此,我输入了以下代码,现在它可以获取“Today”中的值,但它无法验证它是否包含“ERROR”。我可以知道我的代码有什么问题吗?谢谢!


代码:

function checkdata(){
     var ss = SpreadsheetApp.getActiveSpreadsheet()
     var sheet = ss.getSheetByName('Today');
     var lastRow = sheet.getLastRow();
     var lastColumn = sheet.getLastColumn();
     var data = sheet.getSheetValues(lastRow,3,1,1);
     var ss2 = SpreadsheetApp.getActiveSpreadsheet();
     var sheet2 = ss2.getSheetByName('Current');  
     var values = sheet2.getRange("A2:J2").getValues()[0];  

  if (data) {
    if (data.indexOf('#ERROR!') < 0) {
  sheet.getRange(lastRow+1, 1, 1, 10).setValues([[].concat(values)]); 
    }}}

标签: google-apps-scriptmatchgoogle-sheets-api

解决方案


修改点:

  • getSheetValues()返回二维数组。在此脚本中,if 语句始终为true. 我认为这可能是您的问题的原因。

修改后的脚本:

从:

var data = sheet.getSheetValues(lastRow,3,1,1);

到:

var data = sheet.getRange(lastRow, 3).getValue();
  • getValue()返回一个不是数组的对象。例如,当cell的值为字符串值时,返回字符串值。由此,我认为 if 语句有效。

参考:


推荐阅读