arrays - 如何显示来自谷歌表的最新 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
解决方案
既然您已经将每个费用推入数组expenses
,为什么不使用Array.prototype.slice()方法来创建一个新的数组,其中包含您选择的一部分expenses
。
对于您的示例,最后一行可以更改为:
sendText(id, decodeURI( "Here your last expenses: " + "\n" + expenses.slice(-3).join("\n") ));
你可以不用expenseList
变量。
推荐阅读
- angular - 如何每 30 秒刷新一次 observable?
- asp.net-web-api - 将请求正文中使用 JSON 发送的模型属性与绑定其默认值的属性区分开来
- ios - 更改 navigationItem.leftBarButtonItem 的位置
- amazon-web-services - 适用于 HTTP NGINX 的 AWS EC2 安全组自定义 TCP 规则不起作用
- javascript - 如何在 javascript 中设置音频 blob 的编解码器、采样率和比特率?
- c# - 将第一个孩子与 linq 动态进行比较
- c# - 如何从 CommunicationException 类中识别特定异常?
- java - Azure HDInsight 上 Apache Phoenix 的 JDBC 连接 URL
- theos - open2:lzma -c0 的 exec 在 Theos 中构建时失败了内部包错误 2
- c# - C#:Visual Studio 代码编译时间