Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
276 views
in Technique[技术] by (71.8m points)

javascript - Inputting an array into Math.Max in Google Apps Scripts

In a Google sheet, I have a custom form based off of some posts/blogs that I have found online to learn more about Google App Scripts. The form works correctly but I am having trouble with the column that should be creating an ID for the row.

From my reading, it seems that my problem is that math.max() takes a list not an array. Furthermore, none of the methods that I found for regular Javascript seem to be working in Google Apps Scripts. Such as, math.max.apply(null,array).

Do I have to iterate the array or is there something to make max() take an array?

Here is the code that I have been playing with.

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;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use Math.max.apply() at GAS. And data retrieved by getValues() is a 2 dimensional array. So in order to use the data for Math.max.apply(), the array has to be flattened. By reflecting this, the sample script can be modified as follows.

Script :

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;
}

If I misunderstand your question, I'm sorry.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...