我有太多的IF语句, 如何将我的代码转换为案例样式?
这是我的代码示例 我已经研究了很多我似乎无法使用案例陈述
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetBoutons = ss.getSheetByName("Boutons");
var sheetINV = ss.getSheetByName("INV");
var sheetList = ss.getSheetByName("Liste de Bouttons")
var rangeUSER = sheetBoutons.getRange(4, 2)
var rangeUSER2 = sheetBoutons.getRange(4, 3)
var USER = rangeUSER.getValues();
switch(USER) {
case 'Afficher-INV1':
sheetINV.hideColumns(1,183);
sheetINV.showColumns(22);
sheetINV.showColumns(24);
rangeUSER2.setValue(rangeUSER.getValue());
rangeUSER.clearContent();
break;
default:
break
}}
还有更多的案例需要补充,但现在只是视觉污染。 任何帮助表示赞赏,
答案 0 :(得分:1)
猜测,此代码是JavaScript,使用的是Google Spreadsheets。
getValues
返回一组值数组。这偶然地串联到单元格的值(由于长度为1的数组没有添加任何残差)。但JavaScript中的switch
语句与严格的“===
”相等(reference)相比,其中[['abc']] === 'abc'
为false。
getValues
的文档(上面链接)显示了一个索引结果的示例。我会看到switch (USER[0][0]) { ... }
是否有帮助。
答案 1 :(得分:0)
示例:强>
switch (n)
{
case constant1:
// code to be executed if n is equal to constant1;
break;
case constant2:
// code to be executed if n is equal to constant2;
break;
.
.
.
default:
// code to be executed if n doesn't match any constant
}
同样,对于您的代码,它可以是:
switch (USER) {
case 'Afficher-INV1':
sheetINV.hideColumns(1,183);
sheetINV.showColumns(22);
sheetINV.showColumns(24);
rangeUSER2.setValue(rangeUSER.getValue());
rangeUSER.clearContent();
break;
case 'Afficher-INV2':
sheetINV.hideColumns(1,183);
sheetINV.showColumns(22);
sheetINV.showColumns(24);
rangeUSER3.setValue(rangeUSER.getValue());
rangeUSER.clearContent();
break;
default: rangeUSER.clearContent();
}