1

作为一名高中老师,我将所有的评分都记录在 Google 电子表格中。我在该电子表格中编写了可在电子表格中访问的自定义函数。这一切都很好。

我还有一个用谷歌应用脚​​本编写的简单(但独立)的网络应用程序,它总结了每个访问它的学生的成绩信息并在表格中返回它。这已经完美运行了大约 8 个月。但是,现在学生在尝试检查他们的成绩时会收到“NaN”错误。只有使用自定义函数的单元格才会返回“NaN”。通过简单地打开源电子表格,它可以暂时解决问题。但在关闭电子表格后不久,webapp 又开始返回“NaN”。

我假设它与何时/如何重新计算这些单元格有关,但我不知道如何在电子表格关闭时使单元格保持其值。任何帮助将非常感激。

4

1 回答 1

0

在 Eric 的建议下,我实现了以下功能(在我的应用程序早期运行):

function refreshSheet(spreadsheet, sheet) {
  var dataArrayRange = sheet.getRange(1,1,sheet.getLastRow(),sheet.getLastColumn());
  var dataArray = dataArrayRange.getValues(); // necessary to refresh custom functions
  var nanFound = true;
  while(nanFound) {
    for(var i = 0; i < dataArray.length; i++) {
      if(dataArray[i].indexOf('#N/A') >= 0) {
        nanFound = true;
        dataArray = dataArrayRange.getValues();
        break;
      } // end if
      else if(i == dataArray.length - 1) nanFound = false;
    } // end for
  } // end while
}

它基本上会不断刷新工作表(使用 .getValues()),直到所有 #N/A 消失。它工作得非常好,但确实增加了一点延迟。

于 2013-06-28T18:40:13.093 回答