【问题标题】:Move row to new tab after sheet updates automatically工作表自动更新后将行移动到新选项卡
【发布时间】:2021-07-26 04:11:05
【问题描述】:

我需要根据包含“lep”的单元格从选项卡中移动行。问题是它在打开时不会读取工作表上已有的信息(因为它是通过 Zapier 自动从 Shopify 更新新销售的工作表)。

对此有什么解决方案?我已经尝试过 onEdit 和 onOpen 了,但都不起作用。

function onOpen(e) {
  // assumes source data in sheet named SHOPIFY
  // target sheet of move to named ORG
  // test column with yes is col 17 or Q
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = e.source.getActiveSheet();
  var r = e.source.getActiveRange();

  if(s.getName() == "SHOPIFY" && r.getColumn() == 17 && r.getValue().includes("lep")) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("ORG");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:
    function moveRows() {
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getSheetByName('SHOPIFY');
      const tsh = ss.getSheetByName('ORG')
      const vs = sh.getDataRange().getValues();//you may wish to change the range to not include headers
      let d=0;
      vs.forEach((r,i)=>{
        if(r[16].toString().includes("lep")) {
          tsh.appendRow(r);
          sh.deleteRow(i+1-d++);
        }
      });
    }
    
    function onMyOpen() {
      //needs installable trigger
      moveRows();
    }
    

    【讨论】:

      【解决方案2】:

      onEdit() simple trigger 只会在用户手动编辑电子表格时运行。

      onOpen() 简单触发器只会在您在网络浏览器中打开电子表格时运行,其事件对象不包含有关电子表格中任何最近更改的信息。

      要检测 Zapier 所做的更改,您需要一个 on change installable trigger。有关如何执行此操作的示例,请参阅 moveRowsFromSpreadsheetToSpreadsheet_ 脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多