在Google Apps脚本中将数组输入到Math.Max中

CRB*_*CRB 2 javascript google-apps-script

在Google表格中,我有一个自定义表单,该表单基于我在网上找到的一些帖子/博客,以了解有关Google App脚本的更多信息。表单可以正常工作,但是我在为行创建ID的列时遇到了麻烦。

从我的阅读看来,我的问题似乎是math.max()需要一个列表而不是一个数组。此外,我发现用于常规Javascript的方法似乎都无法在Google Apps脚本中使用。例如math.max.apply(null,array)。

我是否需要迭代数组,或者是否可以使max()接受数组?

这是我一直在玩的代码。

function itemAdd(form) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var sh = SpreadsheetApp.getActiveSheet();
  var lRow = sh.getLastRow();
  var range = sh.getRange(3,1,lRow,1);
  var maxNum = Math.max(range)
  sheet.appendRow([maxNum,form.category, form.item, form.manupub, 
form.details, form.quantity]);
  return true;
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

您可以Math.max.apply()在GAS上使用。而由getValues()检索的数据是一个二维数组。因此,为了将数据用于Math.max.apply(),必须将数组展平。通过反映这一点,可以如下修改示例脚本。

剧本:

function itemAdd(form) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var sh = SpreadsheetApp.getActiveSheet();
  var lRow = sh.getLastRow();
  var range = sh.getRange(3,1,lRow,1);
  var ar = Array.prototype.concat.apply([], range.getValues());
  var maxNum = Math.max.apply(null, ar);
  sheet.appendRow([maxNum,form.category, form.item, form.manupub, form.details, form.quantity]);
  return true;
}
Run Code Online (Sandbox Code Playgroud)

如果我误解了您的问题,对不起。