使用 Google Apps 脚本从数组中获取最后一个值
Get last value from an array using Google Apps Script
我需要从数组中获取最后一个值,但在使用 slice
时一直出现此错误
TypeError: Cannot find function slice in object Sun Jul 23 2017 00:00:00 GMT+0100 (BST). (line 15, file
如果我使用长度 -1,我会得到 NaN。
这是我正在使用的代码。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Data");
var range = sheet.getDataRange();
var values = range.getValues();
var today = new Date(Date.now());
today.setHours(0,0,0,0);
Logger.log(today);
var setTotal;
var getToday = values[4].map(Number).indexOf(+today);
Logger.log(getToday);
for (i = 0; i < values.length; i++) {
var getTotal = values[i][getToday];
Logger.log(getTotal.slice(-1)[0]);
}
}
... 这是 table
full table
所以我需要在它与当天(今天)匹配时从该数组(列)中检索最后一个值,即当天的总计。
谢谢!
亲切的问候,
getTotal 始终已经是一个奇异值。
此外,由于时区的原因,您发现列的方式很脆弱,因为您只规范化了一个日期。
如果您在两个日期都这样做(除非您想进行索引约束,否则需要安全处理)您的列查找方法有效。
function getTodaysTotal() {
function toUtcMidnight(date) {
try {return date.setHours(0,0,0,0);}
catch(e) {return;}
}
var values = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("Data")
.getDataRange()
.getValues();
var today = toUtcMidnight(new Date());
var todaysColumn = values[4].map(toUtcMidnight).map(Number).indexOf(+today);
var output = values[values.length - 1][todaysColumn];
return values[values.length - 1][todaysColumn];
}
我需要从数组中获取最后一个值,但在使用 slice
时一直出现此错误TypeError: Cannot find function slice in object Sun Jul 23 2017 00:00:00 GMT+0100 (BST). (line 15, file
如果我使用长度 -1,我会得到 NaN。
这是我正在使用的代码。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Data");
var range = sheet.getDataRange();
var values = range.getValues();
var today = new Date(Date.now());
today.setHours(0,0,0,0);
Logger.log(today);
var setTotal;
var getToday = values[4].map(Number).indexOf(+today);
Logger.log(getToday);
for (i = 0; i < values.length; i++) {
var getTotal = values[i][getToday];
Logger.log(getTotal.slice(-1)[0]);
}
}
... 这是 table
full table
所以我需要在它与当天(今天)匹配时从该数组(列)中检索最后一个值,即当天的总计。
谢谢!
亲切的问候,
getTotal 始终已经是一个奇异值。
此外,由于时区的原因,您发现列的方式很脆弱,因为您只规范化了一个日期。
如果您在两个日期都这样做(除非您想进行索引约束,否则需要安全处理)您的列查找方法有效。
function getTodaysTotal() {
function toUtcMidnight(date) {
try {return date.setHours(0,0,0,0);}
catch(e) {return;}
}
var values = SpreadsheetApp
.getActiveSpreadsheet()
.getSheetByName("Data")
.getDataRange()
.getValues();
var today = toUtcMidnight(new Date());
var todaysColumn = values[4].map(toUtcMidnight).map(Number).indexOf(+today);
var output = values[values.length - 1][todaysColumn];
return values[values.length - 1][todaysColumn];
}