如何使用Apps Script填充符合条件的单元格?

时间:2019-07-16 08:20:10

标签: google-apps-script google-sheets

我是Apps脚本的新手,但我喜欢它提供的功能!

我有一个问题,如何用另一个工作表中设置的值填充特定数组中的单元格。 我有两张纸:  1.开票:列出项目(A列)以及发送发票的日期(B列)  2.发票:是以pdf格式发送的表格(我有相应的脚本)。它仅显示尚未发送发票的项目列表(基本FILTER功能)。

我想在“帐单”表的B列中设置在“发票”表中显示的日期。我的“问题”是我不想填充整个列,而只填充符合此条件的单元格:A列中有一个项目,而B列中没有日期。

这是sheet,用于了解我在寻找什么:

这当然很容易做到,但是由于我是从Apps脚本开始的,所以我不知道该怎么做。 非常感谢您的帮助。

到目前为止,我已经完成了很少的代码来获取日期:

function getDate() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var date = ss.getSheetByName('Invoice').getRange('D7').getValue();
}

1 个答案:

答案 0 :(得分:0)

此函数从“发票”表中的单元格D7中获取日期,然后在“帐单”表中的B列向下迭代,如果同一行中A列的单元格为空,则在该单元格中输入日期:

function putDateInBilling() {

  var direction = SpreadsheetApp.Direction.DOWN  
  var invoiceDate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Invoice').getRange('D7').getValue();
  var billingData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Billing').getRange('A3:A').getNextDataCell(direction);

  for (var row = 3; row <= billingData.getRow(); row++){     
    if (SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Billing').getRange(row, 2, 1, 1).isBlank())      
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Billing').getRange(row, 2, 1, 1).setValue(invoiceDate).setNumberFormat("yyyy-MM-dd");
  }    
}