【问题标题】:Google Script - Conditionally append rows from sheet to sheetGoogle Script - 有条件地将行从工作表附加到工作表
【发布时间】:2021-03-19 23:02:36
【问题描述】:

我正在尝试根据两个条件将行从一张纸附加到另一张纸。一般来说,我对谷歌脚本和编码还很陌生。 您可以找到工作表的副本here

我想提取与前一个 weeknum(在 DASHBOARD 表的 B2 单元格中找到)匹配并且还具有“Not Coming”(MASTER SHEET 的 K 列)的 weeknum(MASTER 表的第 I 列)的所有行. 目标是每周创建一个呼叫列表(在 Call List Cancelled W-1 上),其中包含前一周未履行预约的人员。理想情况下,这些行将附加在呼叫列表表的顶部。

我现在已经设法构建了这段代码。但它不起作用。

// Creating Call List from cancelled appointments in W-1

var ss = SpreadsheetApp.getActiveSpreadsheet();

//CALL LIST
var sheetCallList = ss.getSheetByName("Call List Cancelled W-1");
var rangeCallList = sheetCallList.getDataRange();

//MASTER
var sheetMaster = ss.getSheets()[0];
var dataRangeMaster = sheetMaster.getDataRange();
var valuesMaster = dataRangeMaster.getValues();
var lastRowMaster = sheetMaster.getLastRow();
var cameOrNot = sheetMaster.getRange("K:K").getValues();
var weekNumColumn = sheetMaster.getRange("I:I").getValues()

//DASHBOARD
var sheetDashboard = ss.getSheets()[1];
var weeknum = sheetDashboard.getRange(2, 2).getValue();
var lastweeknum = weeknum - 1

function appendRowsToCallList() {
   for (var i = 2; i < lastRowMaster; i++); {
    if ( lastweeknum == weekNumColumn && cameOrNot == "Not Coming") {
      sheetCallList.rangeCallList.appendRow(valuesMaster);
    }
  }
}

【问题讨论】:

  • appendRow 不适用于 Range 类,但适用于第一张。尝试从最后一行删除“rangeCallList”
  • @WaximCorp 我试过但没有任何反应,我认为我的函数中缺少其他东西。

标签: javascript google-apps-script google-sheets


【解决方案1】:

解决方案:

for 循环中有错字:

for (var i = 2; i < lastRowMaster; i++);

由于有一个额外的分号,这将循环但不执行任何操作。

此外,要追加行,您需要引用 valuesMaster 中的各个数组并检查其他数组中的各个值。索引也以 0 开头,因此要从第二个值开始检查以 1 开头的索引。

功能代码:

function appendRowsToCallList() {

   for (var i = 1; i < lastRowMaster; i++) {
    if ( lastweeknum == weekNumColumn[i][0] && cameOrNot[i][0] == "Not Coming") {
      sheetCallList.appendRow(valuesMaster[i]);
    }
  }
}

输出:

【讨论】:

  • 这就是我认为缺少的,但没有水平自己去做。您是否还知道如何将我每周运行的函数的结果附加在表格顶部而不是底部?
  • 您可以使用 insertRows() 代替 appendRow(),然后获取要插入值的范围,然后使用 setValues()。参考这里:developers.google.com/apps-script/reference/spreadsheet/…
  • 感谢 Carlos,我实际上所做的是使用带有升序值的 auto fort 函数。再次感谢您的帮助,您就是男人!
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多