首页 > 解决方案 > 如何显示来自谷歌表的最新 3 个数据

问题描述

我正在做一个电报机器人来检索我的所有费用。我正在做一个功能来检索最新的 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

标签: arrayspostgoogle-apps-scriptgoogle-sheetsweb-applications

解决方案


既然您已经将每个费用推入数组expenses,为什么不使用Array.prototype.slice()方法来创建一个新的数组,其中包含您选择的一部分expenses

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

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

你可以不用expenseList变量。


推荐阅读