Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 是否有一些方法将特定列的信息记录在最后一行中?_Google Apps Script_Google Sheets_Google Sheets Formula - Fatal编程技术网

Google apps script 是否有一些方法将特定列的信息记录在最后一行中?

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

在google sheets中,我试图将我在另一张表中输入的一些信息记录到我的invoiceLogSheet中。 但问题是:当信息记录到工作表时,它总是记录在整个工作表的最后一行,我想要的是:记录特定列范围的最后一行 (详细说明:签入特定列的自由最后一行并记录此行的信息)

但我不知道怎么写这个。。这是我使用的函数,它不能完成我想要的工作:

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);


}