Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement Google脚本-正确删除Else语句,使其跳过/忽略_If Statement_Google Apps Script - Fatal编程技术网

If statement Google脚本-正确删除Else语句,使其跳过/忽略

If statement Google脚本-正确删除Else语句,使其跳过/忽略,if-statement,google-apps-script,If Statement,Google Apps Script,我有一个检查表,C列指出哪个测试是通过单元格中的“启用”或“禁用”自动进行的 行的下一行是一列,用于每个测试的Pass/Empty列 我有一段代码,如果在C列中启用,在该行的X列中,会自动标记为Pass(在我的例子中是“p”) 问题是:如果C列包含“Disabled”,但也包含一个Pass,那么当我运行脚本时,它会用一个空单元格替换该Pass。如何更改else语句以忽略该单元格,并保留其中的内容,以满足启用条件之外的任何内容 function autoPassPC() { var ss =

我有一个检查表,C列指出哪个测试是通过单元格中的“启用”或“禁用”自动进行的

行的下一行是一列,用于每个测试的Pass/Empty列

我有一段代码,如果在C列中启用,在该行的X列中,会自动标记为Pass(在我的例子中是“p”)

问题是:如果C列包含“Disabled”,但也包含一个Pass,那么当我运行脚本时,它会用一个空单元格替换该Pass。如何更改else语句以忽略该单元格,并保留其中的内容,以满足启用条件之外的任何内容

function autoPassPC() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Aug 2020');
  

  //  What to put in the test result
  var values1 = "P";
  // Where to look for Auto:
  var values2 = sheet.getRange("C10:C15" + sheet.getLastRow()).getValues();
  
  // Keyword to look for in Auto: column
  var putValues = [];
  for (var i = 0; i < values2.length; i++) {
    if (values2[i][0] === "Enabled") {
      putValues.push([values1]);
    } else {
      putValues.push([""]);
    }
  }

  //  Put value1 inside row, column# for test result
  sheet.getRange(10, 25, putValues.length, 1).setValues(putValues);
}
适当地?只要删除它,脚本就会在每一行上加上“P”。只是想让它忽略单元格


谢谢

删除
else
语句实际上会跳过该行,但一旦跳过一行,
putValues
中的以下所有值都将位于错误的行上。不要“跳过”,而是尝试将已存在的值推入
putValues

function autoPassPC() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Aug 2020');
  

  //  What to put in the test result
  var values1 = "P";
  // Where to look for Auto:
  var enabledDisabled = sheet.getRange("C10:C15" + sheet.getLastRow()).getValues();
  var testResultsRange = sheet.getRange("X10:X15" + sheet.getLastRow());
  var testResults = testResultsRange.getValues();
  
  // Keyword to look for in Auto: column
  var putValues = [];
  for (var i = 0; i < enabledDisabled.length; i++) {
    if (enabledDisabled[i][0] === "Enabled") {
      putValues.push([values1]);
    } else {
      putValues.push([testResults[i][0]]); // Push the existing cell value
    }
  }

  //  Put value1 inside row, column# for test result
  testResultsRange.setValues(putValues);
}
函数autoPassPC(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('2020年8月');
//在测试结果中放什么
var values1=“P”;
//在何处查找汽车:
var enabledDisabled=sheet.getRange(“C10:C15”+sheet.getLastRow()).getValues();
var testResultsRange=sheet.getRange(“X10:X15”+sheet.getLastRow());
var testResults=testResultsRange.getValues();
//要在“自动:列”中查找的关键字
var值=[];
对于(变量i=0;i

您也可以尝试一次获取整个表,因此只有一个
getValues()
调用。

删除
else
语句实际上会跳过该行,但一旦跳过一行,
putValues
中的所有以下值都将位于错误的行上。不要“跳过”,而是尝试将已存在的值推入
putValues

function autoPassPC() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Aug 2020');
  

  //  What to put in the test result
  var values1 = "P";
  // Where to look for Auto:
  var enabledDisabled = sheet.getRange("C10:C15" + sheet.getLastRow()).getValues();
  var testResultsRange = sheet.getRange("X10:X15" + sheet.getLastRow());
  var testResults = testResultsRange.getValues();
  
  // Keyword to look for in Auto: column
  var putValues = [];
  for (var i = 0; i < enabledDisabled.length; i++) {
    if (enabledDisabled[i][0] === "Enabled") {
      putValues.push([values1]);
    } else {
      putValues.push([testResults[i][0]]); // Push the existing cell value
    }
  }

  //  Put value1 inside row, column# for test result
  testResultsRange.setValues(putValues);
}
函数autoPassPC(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('2020年8月');
//在测试结果中放什么
var values1=“P”;
//在何处查找汽车:
var enabledDisabled=sheet.getRange(“C10:C15”+sheet.getLastRow()).getValues();
var testResultsRange=sheet.getRange(“X10:X15”+sheet.getLastRow());
var testResults=testResultsRange.getValues();
//要在“自动:列”中查找的关键字
var值=[];
对于(变量i=0;i

您还可以尝试一次获取整个表,这样就只有一个
getValues()
调用。

令人惊讶的是,这似乎正是我想要的工作方式。非常感谢。代码中似乎有什么东西在文档中创建了行?@Leffer这与您定义范围的方式有关,我真的不理解,但假设您这样做是出于特定的原因。如果最后一行是20,那么
C10:C15“+sheet.getLastRow()
将导致“C10:C1520”。您知道如何从这里解决吗?噢,哈哈,我删除了+sheet.getLastRow()在C和X中直接使用我需要的范围现在似乎很好。非常感谢Diego非常感谢令人惊讶的是,这似乎正是我想要的。非常感谢。代码中的某些内容似乎在文档中创建行?@Leffer这与你定义范围的方式有关,我真的没有这样做如果最后一行是20,那么
C10:C15“+sheet.getLastRow()
将导致“C10:C1520”。你知道如何从这里解析吗?噢,哈哈,我删除了+sheet.getLastRow()并简单地直接在C和X中使用我需要的范围,现在看起来效果不错。非常感谢迭戈,非常感谢