如何显示来自 google sheet 的最新 3 条数据

How to display latest 3 data from google sheet

我正在做一个电报机器人来检索我所有的费用。我正在做一个功能来检索最近的 3 笔费用。

这是列出我的费用的部分,它将显示所有费用

function doPost(e) {
var contents = JSON.parse(e.postData.contents); 
var ssId = "<< ssId >>";
var sheet =  SpreadsheetApp.openById(ssId).getSheetByName("Sheet1");
if (contents.callback_query) {
    var id = contents.callback_query.from.id;
    var data = contents.callback_query.data;
    if (data == 'expenses') {
      var expenses = [];
      var lr = sheet.getDataRange().getLastRow();
      
      for(var i = 6; i <=lr; i++) { //my expenses record start from cell A6
        var date = sheet.getRange(i,1).getValue();
        
        var month = new Array();
        month[0] = "January";
        month[1] = "February";
        month[2] = "March";
        month[3] = "April";
        month[4] = "May";
        month[5] = "June";
        month[6] = "July";
        month[7] = "August";
        month[8] = "September";
        month[9] = "October";
        month[10] = "November";
        month[11] = "December"; 
        
        var formatedDate = date.getDate() + " " + (month[date.getMonth()]) + " " + date.getFullYear();     
        var item = sheet.getRange(i,2).getValue();
        var price = sheet.getRange(i,3).getValue();
        
        expenses.push("\n" + formatedDate + " | " + item + " | " + price );
        var expenseList = expenses.join("\n");
      }
      sendText(id, decodeURI( "Here your last expenses: " + "\n" + expenseList ));
    }

My google sheet looks like
Date        | Expenses | Price
03 Mar 2020 | Cookies  | 6
04 Mar 2020 | Bread    | 5
05 Mar 2020 | Drinks   | 7
06 Mar 2020 | Chocolate| 8
07 Mar 2020 | Buns     | 7
08 Mar 2020 | Sweets   | 7

既然你已经把每笔费用都推入数组 expenses,为什么不使用 Array.prototype.slice() 方法,用你选择的 expenses 的一部分创建一个新数组。

对于您的示例,最后一行可以更改为:

sendText(id, decodeURI( "Here your last expenses: " + "\n" + expenses.slice(-3).join("\n") ));

你可以不用 expenseList 变量。