簡體   English   中英

使用 Google Apps 腳本從數組中獲取最后一個值

[英]Get last value from an array using Google Apps Script

我需要從數組中獲取最后一個值,並且在使用 slice 時不斷收到此錯誤

類型錯誤:在 object 中找不到 function 切片 2017 年 7 月 23 日星期日 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]); 
 }
}

...這是桌子

滿桌

所以我需要在它與當天(今天)匹配時從該數組(列)中檢索最后一個值,這是當天的總計。

謝謝

親切的問候,

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

您可以使用.pop()方法返回並刪除數組中的最后一個元素。

首先復制原始數組並使用.pop()方法並將其分配給新值。

var myArray = myArrayCopy
var lastArrayObject = myArrayCopy.pop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM