Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 谷歌脚本';如果';问题-只做两项任务中的一项_If Statement_Google Apps Script - Fatal编程技术网

If statement 谷歌脚本';如果';问题-只做两项任务中的一项

If statement 谷歌脚本';如果';问题-只做两项任务中的一项,if-statement,google-apps-script,If Statement,Google Apps Script,我有'else-if'语句,我只需要在前面的'if'没有执行时调用它。第一个“如果”(检查状态)工作正常,第二个工作正常,但每次都会执行“如果其他”,因为表中有不同的类型(A、B、C e.t.C) 编辑: 1.如果没有打开的A,则必须添加新行; 2.如果打开多个A-所有A-必须关闭; 3.忽略所有其他类型,仅当没有As open时才添加新行 这是我的密码: function myFunction() { var sheet = SpreadsheetApp.getActiveSpreadsh

我有'else-if'语句,我只需要在前面的'if'没有执行时调用它。第一个“如果”(检查状态)工作正常,第二个工作正常,但每次都会执行“如果其他”,因为表中有不同的类型(A、B、C e.t.C)

编辑: 1.如果没有打开的A,则必须添加新行; 2.如果打开多个A-所有A-必须关闭; 3.忽略所有其他类型,仅当没有As open时才添加新行

这是我的密码:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');
  var data = sheet.getRange(2,1,sheet.getLastRow(),2).getValues();
  var nextRow = SpreadsheetApp.getActiveSheet().getDataRange().getLastRow()+1;

  for (var i=0; i<data.length; i++){
    var row = data[i];
    var type = row[0];
    var status = row[1];

//check it always     
    if (status != 'close'){

//check first and if it's true don't do 'else if'      
       if (type == 'A') {
         sheet.getRange(i+2,2).setValue('close')
       }

//this should only be called if the previous 'if' is not true      
      else if (type != 'A' && type != ''){
        var values = [['A','open']];
        sheet.getRange("A"+nextRow+":B"+nextRow).setValues(values); 
      }
    }
  }
}
函数myFunction(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');
var data=sheet.getRange(2,1,sheet.getLastRow(),2).getValues();
var nextRow=SpreadsheetApp.getActiveSheet().getDataRange().getLastRow()+1;
对于(var i=0;iFlow:
  • 循环查看所有数据,以确定是否存在“a:打开”
  • 如果在所有数据中找到,只需关闭该行
  • 否则,添加新行:“a:打开”
  • 使用布尔变量(
    isThereASingleAOpen
    )跟踪:打开查找状态
示例脚本:
函数closeAandAddOpenA(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');
//分离范围和数据
var range=sheet.getRange(2,1,sheet.getLastRow(),2);
var data=range.getValues();
//数据中是否有一个未解决的问题?假设没有
var isThereASingleAOpen=假;
//循环遍历数据数组
对于(变量i=0;i
但是每次都会执行“else-if”,这让你怎么想?因为在第一列中,我总是有一些项目(类型)具有打开状态(第二列),所以会调用“else-if”。我在示例1的描述中添加了一个示例,
type!=“A”和&type!=“将满足第2行的要求:
B:open
:即状态==“close”:
true
>type==“A”:
false
>如果调用else>
type!='A'&&type!='
true
,因此如果执行了块,则为else。我真的不明白您的意思。需要更改什么,例如更改类型A状态以关闭,而不是在最后一行添加行('else if'))?如果A1是
example1
,A4:B4=
B:Open
,那么,因为它的类型不是A,否则该行将执行If block。循环从上到下检查每一行。当它达到A4:B4时,添加新行。当它达到A5:B5(
A:Open
)时,B5将更改为
close
。您明白吗?
function closeAandAddOpenA() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SheetName');

  //Separate range and data
  var range = sheet.getRange(2, 1, sheet.getLastRow(), 2);
  var data = range.getValues();

  //Is there a A Open in the data? Let's assume there's none
  var isThereASingleAOpen = false;

  //Loop through data array
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var type = row[0];
    var status = row[1];

    //If status is != close and type == 'A'
    if (status != 'close' && type == 'A') {
      //Change current row status to close in the data array
      row[1] = 'close';
      //Oops We were wrong. There was a A open in the data
      isThereASingleAOpen = true;
    }
  } //Loop closed

  //Set the modified data back to the range
  //Batch  operations are faster
  range.setValues(data);

  //if there is NOT a single A open in all of data, Append a new line
  if (!isThereASingleAOpen) {
    sheet.appendRow(['A', 'Open']);
  }
}