Google脚本仅适用于手动输入的数据,不适用于通过电子表格中的importrange引入的数据

时间:2017-07-24 04:11:09

标签: google-apps-script google-sheets

我有这个脚本隐藏那些包含单词 - 'Matured'(在F列中)

的行
function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var r = e.source.getActiveRange();

  if (sheet.getName() == "Follow-ups LAPL" && r.getColumnIndex() == 6 && r.getValue() == "Matured")
  sheet.hideRows(r.getRowIndex(),1);

问题是 - 只有在手动输入'成熟'(在F列中)时,脚本才会隐藏行,但如果通过importrange引入相同的内容(在同一个中)则不起作用F列。

是设计还是有解决方法?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这是设计的。对于您的用例,您可以触发onchange事件而不是onEdit事件,或者您可以触发两者。看看onChange是否适用于这两种情况,如果是这样,您可能只会触发它。如果没有,那么您可以同时触发两个事件。 您可以通过转到Current Project的触发器来触发同一功能上的多个事件,如下所示: enter image description here

答案 1 :(得分:0)

您可以创建自己的功能并每分钟触发一次。但请确保在主电子表格(包含在importrange 中的电子表格ID)中删除空单元格,否则在下面循环 sheet.getLastRow()也会计算空单元格导致不必要的迭代。

function onModified() {
    var ss = SpreadsheetApp.openById('SPREADSHEET ID');
    var sheet = ss.getSheetByName("Follow-ups LAPL");
    var getData = sheet.getRange(1, 6, sheet.getLastRow(), 1).getValues();
    Logger.log(getData.length);
    for (var i = 0; i < getData.length; i++) {
        if (getData[i][0] == "Matured") {
            sheet.hideRows(i+1,1);
        } else {
            sheet.showRows(i+1, 1);
        }
    }
}