谷歌应用程序脚本中的IF ELSE IF块出现问题



我有一份长期运行的个人预算表,我开始对它进行修改,以了解更多谷歌应用程序脚本等。我在这里有一个表格的基本/测试版本:https://docs.google.com/spreadsheets/d/12abf7Cczjm9FaMnJV3V3jbePRUWVrGebJWpWh2SusJE/edit?usp=sharing

无论如何,我一直致力于;非每月订阅&这样的";部分(预算表上的I25:M43(,并最初将其设置为仅具有年度订阅。当>gt;列被勾选,它将把相关数据移动到表格的工作区部分,并增加年份——这在我的";Prod";工作表副本。

我意识到这些项目还有其他一些可能发生的方式,所以我试图添加一个IF-Else-IF语句块来处理不同类型的时间表。该功能是脚本中onEdit((函数的一部分,但相关位从第59行开始。这是一份现有内容的副本:

//Add non-monthly items to working area
if(col == 12 && row > 26 && row < 44 && range.isChecked()){
var bill = range.offset(0,-3).getValue();
var dbill = range.offset(0, -1).getDisplayValue();
var amt = range.offset(0,1).getValue();
var due = range.offset(0, -1).getValue();
var type = range.offset(0,-2).getValue();
var annual = "Annual";
var w12 = "12 Weeks";
var qtr = "Quarterly";
var bia = "Bi-Annual";
var once = "Once";
Bu.getRange('P41').setValue(`${bill} (${dbill})`);
Bu.getRange('R41').setValue(amt);

if(type.getValue() == w12){
due.setDate(due.getDate() + 84);
range.offset(0,-1).setValue(due);
}else if(type.getValue() == annual){
due.setFullYear(due.getFullYear() + 1);
range.offset(0,-1).setValue(due);
}else if(type.getValue() == qtr){
due.setMonth(due.getMonth() + 3);
range.offset(0,-1).setValue(due);
}else if(type.getValue() == bia){
due.setMonth(due.getMonth() + 6);
range.offset(0,-1).setValue(due);
}else if(type.getValue() == once){
range.offset(0,-3).clear;
range.offset(0,-2).clear;
range.offset(0,-1).clear;
range.offset(0,1).clear;
}

range.uncheck();
SubSort();   
BillSort();
}

在第一个IF语句之前,一切似乎都很好,在这一点上,它似乎只是中止了。感谢您的帮助或建议!

好的,所以我解决了这个问题。在上面的片段中,我试图在不需要的地方使用getValue((。校正后的行为:

if(type == w12){
console.log('12 Weeks');
due.setDate(due.getDate() + 84);
range.offset(0,-1).setValue(due);
}else if(type == annual){
console.log('Annual');
due.setFullYear(due.getFullYear() + 1);
range.offset(0,-1).setValue(due);
}else if(type == qtr){
console.log('Quarterly');
due.setMonth(due.getMonth() + 3);
range.offset(0,-1).setValue(due);
}else if(type == bia){
console.log('Bi-Annual');
due.setMonth(due.getMonth() + 6);
range.offset(0,-1).setValue(due);
}else if(type == once){
console.log('Once')
range.offset(0,-3).clearContent();
range.offset(0,-2).clearContent();
range.offset(0,-1).clearContent();
range.offset(0,1).clearContent();
}

最新更新