【问题标题】:Copy a specific row, that mets a condition, form one sheet to another将满足条件的特定行从一张纸复制到另一张纸
【发布时间】:2021-02-09 17:51:55
【问题描述】:

几天前我使用以下链接提出了类似的请求:

How to copy a specific row from one sheet to another (Google Apps Script)

现在我有新的需求需要您的帮助:

  1. 脚本应将 T 列中值为“No”的特定行从一张纸复制到另一张纸。它复制值和格式很重要。

  2. 应该复制完整的行。

  3. 复制成功后,该行应该在源表中删除。

你能帮帮我吗?非常感谢!

到目前为止,您可以在下面找到@Marios 解决方案。在此再次非常感谢!

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = ss.getSheetByName("[Overview] All_Cases");
  const tarSheet = ss.getSheetByName("OPS_FUNNEL");
  const data = srcSheet.getDataRange().getValues().filter(r=>r[21]=='No').map(r => [r[0]]);
  var tarlast = tarSheet.getRange("A:A").getValues().filter(String).length;
  
  if (data.length>0){
    tarSheet.getRange(tarlast+1,1,data.length,1).setValues(data);  
  }

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    解释:

    您可以将已删除的行索引存储在过滤器函数本身中,然后使用classical 方法向后删除行。

    解决方案:

    T 的数组索引为 19,而不是 21。小心这个。

    function myFunction() {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const srcSheet = ss.getSheetByName("[Overview] All_Cases");
      const tarSheet = ss.getSheetByName("OPS_FUNNEL");
      const rowsD = [];
      const data = srcSheet.getDataRange().getValues()
                   .filter((r,i)=>{
                           let val = r[19]=='No';
                           if(val){
                              rowsD.push(i+1);
                              return val;
                           }                      
                    });
      if (data.length>0){
        tarSheet.getRange(tarSheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);
        for (var i = rowsD.length - 1; i>=0; i--) {
          srcSheet.deleteRow(rowsD[i]); 
        }
      };
    }
    

    【讨论】:

    • @user14523871 您需要找到该列的索引。例如,C 列位于第三个位置。但是 JavaScript 数组的索引从 0 开始。所以你需要使用号码2。 (0 索引是 A 列,1 索引是 B 列,2 索引是 C 列)。如果该列在右侧太远,找出该列索引的一种方法是简单地创建一个公式。在单元格 A1 中输入数字 0,在单元格 B1 中输入公式:=A1+1 并将其一直拖到左侧直到 BL。所以你会看到你需要使用的索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多