Google apps script 是否有一些方法将特定列的信息记录在最后一行中?
在google sheets中,我试图将我在另一张表中输入的一些信息记录到我的invoiceLogSheet中。 但问题是:当信息记录到工作表时,它总是记录在整个工作表的最后一行,我想要的是:记录特定列范围的最后一行 (详细说明:签入特定列的自由最后一行并记录此行的信息) 但我不知道怎么写这个。。这是我使用的函数,它不能完成我想要的工作:Google apps script 是否有一些方法将特定列的信息记录在最后一行中?,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,在google sheets中,我试图将我在另一张表中输入的一些信息记录到我的invoiceLogSheet中。 但问题是:当信息记录到工作表时,它总是记录在整个工作表的最后一行,我想要的是:记录特定列范围的最后一行 (详细说明:签入特定列的自由最后一行并记录此行的信息) 但我不知道怎么写这个。。这是我使用的函数,它不能完成我想要的工作: function InvoiceLog(invoice_number, part, due_date, totalInvoice, payable_to, p
function InvoiceLog(invoice_number, part, due_date, totalInvoice, payable_to, project_name, note)
{
//DEFINE ALL ACTIVE SHEETS
var ss = SpreadsheetApp.getActiveSpreadsheet();
//DEFINE INVOICE LOG SHEET
var invoiceLogSheet = ss.getSheetByName("information");
//GET LAST ROW OF INVOICE LOG SHEET
var nextRowInvoice = invoiceLogSheet.getLastRow() + 1;
//POPULATE INVOICE LOG
invoiceLogSheet.getRange(nextRowInvoice, 2).setValue(invoice_number);
invoiceLogSheet.getRange(nextRowInvoice, 3).setValue(part);
invoiceLogSheet.getRange(nextRowInvoice, 4).setValue(due_date);
invoiceLogSheet.getRange(nextRowInvoice, 5).setValue(totalInvoice);
invoiceLogSheet.getRange(nextRowInvoice, 6).setValue(payable_to);
invoiceLogSheet.getRange(nextRowInvoice, 7).setValue(project_name);
invoiceLogSheet.getRange(nextRowInvoice, 8).setValue(note);
}
我想检查其中最后一行的列是(B:H)。说明:
解决这个问题的一种方法是使用公认的问题答案
基本上,对于每一个选定的列,您都可以这样计算总行数:
invoiceLogSheet.getRange('B:B').getValues().filter(String).长度+1
请注意,此方法将为您提供特定列中非空单元格的总数。如果你有空白单元格,那么它会给你一个比正确的小的数字
解决方案:
function InvoiceLog(invoice_number, part, due_date, totalInvoice, payable_to, project_name, note)
{
//DEFINE ALL ACTIVE SHEETS
var ss = SpreadsheetApp.getActiveSpreadsheet();
//DEFINE INVOICE LOG SHEET
var invoiceLogSheet = ss.getSheetByName("information");
//GET LAST ROW OF INVOICE LOG SHEET
var nextRowInvoice = invoiceLogSheet.getLastRow() + 1;
// new code
//POPULATE INVOICE LOG
invoiceLogSheet.getRange(invoiceLogSheet.getRange('B:B').getValues().filter(String).length +1, 2).setValue(invoice_number);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('C:C').getValues().filter(String).length +1, 3).setValue(part);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('D:D').getValues().filter(String).length +1, 4).setValue(due_date);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('E:E').getValues().filter(String).length +1, 5).setValue(totalInvoice);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('F:F').getValues().filter(String).length +1, 6).setValue(payable_to);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('G:G').getValues().filter(String).length +1, 7).setValue(project_name);
invoiceLogSheet.getRange(invoiceLogSheet.getRange('H:H').getValues().filter(String).length +1, 8).setValue(note);
}