伙计们我正在学习谷歌应用程序脚本到电报机器人, 我写了自动回复命令并且回复成功,如果我发送@02-02-2021,它将显示当天所有记录的数据,但在我的代码中它只返回1行,我尝试了任何方法但没有任何效果。 感谢您的帮助,
function searchDataByTanggalTransaksi(Tanggal){
var rangeNameTransaksi = "Transaksi!A2:O";
var rowsTransaksi = Sheets.Spreadsheets.Values.get(MYSSID, rangeNameTransaksi).values;
var panjangTransaksi = rowsTransaksi.length;
var Tanggal, Nama_Item, Divisi, Sat, Qty, Harga_Satuan, Debet, Kredit, Saldo, Peruntukan, Total = "";
var pesan ="";
for (var row = 0; row < panjangTransaksi; row++ ){
if ("@" + rowsTransaksi[row][1]==Tanggal){
Tanggal = "? Tanggal Transaksi : " + rowsTransaksi[row][1];
Nama_Item = rowsTransaksi[row][2];
Divisi = rowsTransaksi[row][3];
Sat = rowsTransaksi[row][4];
Qty = rowsTransaksi[row][5];
Harga_Satuan = rowsTransaksi[row][6];
Debet = rowsTransaksi[row][7];
Kredit = rowsTransaksi[row][8];
Saldo = rowsTransaksi[row][9];
Peruntukan = rowsTransaksi[row][12];
Total = "? Total Transaksi : " + rowsTransaksi[row][14] + ",-";
pesan += "<code>- " + Nama_Item + " |" + Qty + " " + Sat + " |" + Kredit + "</code>";
return pesan ;
}
}
return "Data tanggal tidak ditemukan";
}
function testgetRowsTransaksi(){
var tanggal = searchDataByTanggalTransaksi("@2");
var x = ""
}
答案 0 :(得分:0)
一种方法是将找到的值存储在数组中,我假设您想返回 pesan
对吗?
因此,可能的解决方案之一是将找到的每条记录都存储到数组中,然后返回整个数组(如果没有找到,数组长度将为 0)。
这是修改后的代码:
function searchDataByTanggalTransaksi(Tanggal) {
var rangeNameTransaksi = "Transaksi!A2:O";
var rowsTransaksi = Sheets.Spreadsheets.Values.get(MYSSID, rangeNameTransaksi)
.values;
var panjangTransaksi = rowsTransaksi.length;
var Tanggal,
Nama_Item,
Divisi,
Sat,
Qty,
Harga_Satuan,
Debet,
Kredit,
Saldo,
Peruntukan,
Total = "";
var pesan = "";
var resultArray = []; //Mentioned array to pass data in.
for (var row = 0; row < panjangTransaksi; row++) {
if ("@" + rowsTransaksi[row][1] == Tanggal) {
Tanggal = "? Tanggal Transaksi : " + rowsTransaksi[row][1];
Nama_Item = rowsTransaksi[row][2];
Divisi = rowsTransaksi[row][3];
Sat = rowsTransaksi[row][4];
Qty = rowsTransaksi[row][5];
Harga_Satuan = rowsTransaksi[row][6];
Debet = rowsTransaksi[row][7];
Kredit = rowsTransaksi[row][8];
Saldo = rowsTransaksi[row][9];
Peruntukan = rowsTransaksi[row][12];
Total = "? Total Transaksi : " + rowsTransaksi[row][14] + ",-";
pesan +=
"<code>- " +
Nama_Item +
" |" +
Qty +
" " +
Sat +
" |" +
Kredit +
"</code>";
return resultArray.push(pesan); //Data passed in per every iteration.
}
}
return resultArray; //returning line
return "Data tanggal tidak ditemukan"; // this line is obsolete
}
function testgetRowsTransaksi() {
var tanggal = searchDataByTanggalTransaksi("@2");
var x = "";
}
答案 1 :(得分:0)
虽然我不太确定,panjangTransaksi 变量保存什么样的数据,如果您只想要连接字符串中的所有匹配项,您可以尝试如下
function searchDataByTanggalTransaksi(Tanggal){
var rangeNameTransaksi = "Transaksi!A2:O";
var rowsTransaksi = Sheets.Spreadsheets.Values.get(MYSSID, rangeNameTransaksi).values;
var panjangTransaksi = rowsTransaksi.length;
return panjangTransaksi.reduce((acc, ele) => {
let Nama_Item, Divisi, Sat, Qty, Harga_Satuan, Debet, Kredit, Saldo, Peruntukan, Total = "";
if ("@" + ele[1] == Tanggal){
Tanggal = "? Tanggal Transaksi : " + ele[1];
Nama_Item = ele[2];
Divisi = ele[3];
Sat = ele[4];
Qty = ele[5];
Harga_Satuan = ele[6];
Debet = ele[7];
Kredit = ele[8];
Saldo = ele[9];
Peruntukan = ele[12];
Total = "? Total Transaksi : " + ele[14] + ",-";
acc += "<code>- " + Nama_Item + " |" + Qty + " " + Sat + " |" + Kredit + "</code>";
}
return acc;
}, '') || "Data tanggal tidak ditemukan";
}
答案 2 :(得分:0)
程序永远不会输入此 if ("@" + rowsTransaksi[row][1]==Tanggal)
,因为 Tanggal
未定义。
答案 3 :(得分:0)
我找到了解决方法,在上面的方法中我使用了 return
,但是当我 sendText
它回复所有行
case "/tgl" :
var ssIdLogistik ="mySsId";
var rangeNameTransaksi = "Transaksi!A2:O";
var rowsTransaksi = Sheets.Spreadsheets.Values.get(ssIdLogistik, rangeNameTransaksi).values;
var panjangTransaksi = rowsTransaksi.length;
var Tanggal, Nama_Item, Divisi, Sat, Qty, Harga_Satuan, Debet, Kredit, Saldo, Peruntukan, Total = "";
for ( var row = 0; row < panjangTransaksi; row++){
if (rowsTransaksi[row][1] == perintah[1]){
Tanggal = "? Tanggal Transaksi : " + rowsTransaksi[row][1];
Nama_Item = rowsTransaksi[row][2];
Divisi = rowsTransaksi[row][3];
Sat = rowsTransaksi[row][4];
Qty = rowsTransaksi[row][5];
Harga_Satuan = rowsTransaksi[row][6];
Debet = rowsTransaksi[row][7];
Kredit = rowsTransaksi[row][8];
Saldo = rowsTransaksi[row][9];
Peruntukan = rowsTransaksi[row][12];
Total = "? Total Transaksi : " + rowsTransaksi[row][14] + ",-";
text += "<code>- " + Nama_Item + " |" + Qty + " " + Sat + " |" + Kredit+ ",-" + "</code>\n";
}
}
if(text == ""){
text = "? Periksa format penulisan kode permintaan Tanggal.\n\n" +
"Melihat transaksi berdasarkan tanggal di awali dengan '/tgl_' dengan format /tgl_hh-bb-tttt:\n" +
" ?? /tgl_02-02-2021 \n";}
sendText(updates.message.chat.id, logoData + "<code>" + Tanggal + "\n----------\n" + text + "----------\n" + Total + "</code>");
break;