【问题标题】:Get last value from an array using Google Apps Script使用 Google Apps 脚本从数组中获取最后一个值
【发布时间】:2017-07-23 12:50:05
【问题描述】:

我需要从数组中获取最后一个值,当我使用 slice 时我不断收到此错误

TypeError:无法在对象中找到函数切片 Sun Jul 23 2017 00:00:00 GMT+0100 (BST)。 (第 15 行,文件

如果我使用长度 -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]); 
 }
}

...这是桌子

full table

所以我需要在它与当天(今天)匹配时从该数组(列)中检索最后一个值,即当天的总计。

谢谢!

亲切的问候,

【问题讨论】:

  • getTotal 是什么样的?如果它不是字符串或数组,则不能对其进行切片:developers.google.com/apps-script/reference/spreadsheet/… 值可能是 Number、Boolean、Date 或 String 类型,
  • 当我调试它说它是一个字符串 ....
  • 每次? if (typeof values[i][getToday] == "String") Logger.log("ok to slice");Logger.log(getTotal.slice(-1)[0]); } else console.log("Not ok")
  • 这似乎发生在标题行(5,索引 4?)。你想切出什么?
  • getDataRange 将返回 A1:S61 并且 getValues 将返回 2 个空数组,一个数组与我的表中的周数和另一个数组与工作日 .... 所以我需要查找并匹配的数组日期为 [4]。一旦匹配了我需要从该列中获取最后一个值的日期。

标签: javascript arrays multidimensional-array google-apps-script google-apps


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多