将工作表复制到另一个电子表格[Google Apps脚本]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将工作表复制到另一个电子表格[Google Apps脚本]相关的知识,希望对你有一定的参考价值。

我无法使用此功能。必须将电子表格“A”的所有值复制到电子表格“B”。

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 1; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      Logger.log(array);
      sheet2.appendRow(array);
      sheet1.deleteRow(y);
      }
}

它现在复制两个或三个值,但复制多次(随机)。该函数还必须从sheetA中删除复制的值。但它只删除添加到sheetB的值。

编辑(更新代码)

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 0; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      sheet2.appendRow(array);
      sheet1.deleteRow(y+1);
      array = [];
      }
}
答案

玩了一下后,我找到了一个修复程序(虽然是黑客,我猜。我相信有更好的方法)

发生的事情是,在第14行你appendRow(数组),你将数组的当前状态附加到第二张表;基本上随着时间的推移创建一个大的金字塔值的数组。

如果表1包含这样的内容:1,1,1

2,2,2

3,3,3

4,4,4

5,5,5

您的工作表2将附加:1,1,1

1,1,1,2,2,2

1,1,1,2,2,2,3,3,3

... 等等。

你可以这样做:

function triggerOnTime() {
  var SpreadSheetKeyA = "142WNsfQQkSx4BuNhskDM9aXD9ylRHNZh34oO5TBTt1g";
  var SpreadSheetKeyB = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
  var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
  var sheet2 = SpreadsheetApp.openById(SpreadSheetKeyB).getActiveSheet();
  var data = sheet1.getDataRange().getValues();
  var array = [];
  for (var y = 1; y < data.length; y++) {

    for (var x = 0; x < 35; x++){
      array.push(data[y][x]);
    }
      sheet2.appendRow(array);
      sheet1.deleteRow(y);
      array = []; //reset the array contents
      }
}

附加行将重置阵列并添加要复制的行。

如果这对您有用,请告诉我。

以上是关于将工作表复制到另一个电子表格[Google Apps脚本]的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一个电子表格复制到另一个 Google 表格

Google Apps 脚本 - 将一行数据从一个电子表格移动到另一个电子表格

Google 表格/AppScript - 将数据从一张表格复制到另一张表格

将数据从一张电子表格复制到另一张电子表格

用于将行复制并粘贴到另一个工作表而不将其粘贴到页面数英里的宏

Google 电子表格 - 用于编辑和附加新数据的主表副本