Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
Javascript 循环有问题吗_Javascript_Google Sheets - Fatal编程技术网

Javascript 循环有问题吗

Javascript 循环有问题吗,javascript,google-sheets,Javascript,Google Sheets,我对编码(培训会计师)完全陌生,我正在尝试开发一个基于答案的表单中的循环,隐藏或显示另一个表单中存在的一系列数据。我现在已经手动构建了它,但是它太慢了,所以我希望我能得到一些关于如何使用循环构建相同函数的建议。任何帮助都将不胜感激。下面的示例代码 //provides code on how to hide or show rows depending on a cell value function HideRow() { var ss = SpreadsheetApp.getActi

我对编码(培训会计师)完全陌生,我正在尝试开发一个基于答案的表单中的循环,隐藏或显示另一个表单中存在的一系列数据。我现在已经手动构建了它,但是它太慢了,所以我希望我能得到一些关于如何使用循环构建相同函数的建议。任何帮助都将不胜感激。下面的示例代码

//provides code on how to hide or show rows depending on a cell value

function HideRow() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var areas = ss.getSheetByName("areas");
  var Budget = ss.getSheetByName("Budget by Month");

  //REVENUE SECTION

  //provides code on hiding tuition section
  var tuition = areas.getRange('B7').getValue();
  if (tuition == "no"){
    Budget.hideRows(4,6);}
  else {
    Budget.showRows(4,6);
  }
  //provides code on hiding financial aid section
  var aid =areas.getRange('B8').getValue();
  if (aid == "no"){
    Budget.hideRows(10,8);}
  else {
    Budget.showRows(10,8);
  }
  //provides code on hiding student fees section
  var fees =areas.getRange('B9').getValue();
  if (fees == "no"){
    Budget.hideRows(18,16);
  }
  else {
    Budget.showRows(18,16);
  }
}

创建一个循环并不容易,因为rowStart和rowEnd的值并没有遵循看起来的结构。但我设法使它更简洁易读

function HideRow() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var areas = ss.getSheetByName("areas");
  var Budget = ss.getSheetByName("Budget by Month");

  //REVENUE SECTION
  var json = JSON.parse(''); //use my json here

  json.forEach(function(item) {
     if (areas.getRange(item.range).getValue() == "no"){
        Budget.hideRows(item.startRow, item.endRow);
     }
     else {
        Budget.showRows(item.startRow, item.endRow);
     }
  });
}
您可以创建一个JSON对象来存储这些变量,这样它将是一个纯循环逻辑

[{
“范围”:“B7”,
“startRow”:4,
“结束行”:6
}, {
“范围”:“B8”,
“startRow”:10,
“尾行”:8
}, {
“范围”:“B9”,
“startRow”:18岁,
“尾行”:16
}]

hideRows方法的值是否正确?对于学费部分,它使用4,6。然后使用相反的顺序;10,8&18,16?第一个数字是行索引,第二个数字是从索引开始要隐藏多少行。工作非常完美!谢谢你,贝雷奎特!