繁体   English   中英

复制一个范围并仅将具有值和图像的行粘贴到另一个工作表中下一个空白行的谷歌工作表中?

[英]Copy a range and paste only rows with values & images into another sheet at the next blank row in the google sheets?

我需要你的帮助来复制和粘贴上面的脚本。 B12:W44范围内有可变行数据。 可能有 2 或 20 行数据。 如果有2行数据,我运行代码后目标范围内有2行有值和31行空行。 如何只复制和粘贴有数据的单元格? 目标范围内有这么多空行:((

function Movedata3() {
  var ss = SpreadsheetApp.getActive();
  var srcSheet = ss.getSheetByName("INVOICE");
  var dstSheet = ss.getSheetByName("HISTORICAL SALES");
  var srcRange = srcSheet.getRange("B12:W44");
  var dstRange = dstSheet.getRange(dstSheet.getLastRow() + 1, 1);
  srcRange.copyTo(dstRange, { contentsOnly: true });
}

我相信你目前的情况和你的目标如下。

  • 在您的情况下,源工作表的“B12:W44”范围有多个空行。 关于空行,在这种情况下,从“B”到“W”的所有列都是空单元格。 并且,该行包括值和图像。
  • 通过删除空行,您只想将值和图像复制到目标工作表的最后一行。

在这种情况下,如何进行以下修改?

修改脚本:

在这个修改中,使用了Sheets API。 因此,在您使用此脚本之前, 请在 Advanced Google services 中启用 Sheets API

function Movedata3() {
  var ss = SpreadsheetApp.getActive();
  var srcSheet = ss.getSheetByName("INVOICE");
  var dstSheet = ss.getSheetByName("HISTORICAL SALES");
  var srcRange = srcSheet.getRange("B12:W44");
  var srcSheetId = srcSheet.getSheetId();
  var dstSheetId = dstSheet.getSheetId();
  var srcStartRow = srcRange.getRow();
  var srcStartCol = srcRange.getColumn();
  var srcEndCol = srcStartCol + srcRange.getNumColumns();
  var dstRange = dstSheet.getRange(dstSheet.getLastRow() + 1, 1);
  var dstStartRow = dstRange.getRow();
  var requests = srcRange.getDisplayValues().reduce((ar, r, i) => {
    if (r.join("") != "") {
      ar.push({ copyPaste: { source: { sheetId: srcSheetId, startRowIndex: i + srcStartRow - 1, endRowIndex: i + srcStartRow, startColumnIndex: srcStartCol - 1, endColumnIndex: srcEndCol }, destination: { sheetId: dstSheetId, startRowIndex: dstStartRow + ar.length - 1, endRowIndex: dstStartRow + ar.length }, pasteType: "PASTE_VALUES" } });
    }
    return ar;
  }, []);
  Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId());
}
  • 在这个修改中,除了空行之外的行是从源工作表中的“B12:W44”中检索的。 并且,这些行被复制到目标工作表。

  • 使用电子表格服务(SpreadsheetApp)时,每一行都使用循环进行复制。 在这种情况下,我认为过程成本会变高。 因此,在这个答案中,我建议使用 Sheets API。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM