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