将表格复制到另一个电子表格[Google Apps Script]

Copy sheet to another spreadsheet [Google Apps Script]

本文关键字:Google Apps Script 电子表格 表格 复制 另一个      更新时间:2023-09-26

我不能让这个函数工作。它必须复制电子表格"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中的值。

EDIT(更新后的代码)

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 = [];
      }
}

在玩了一会儿之后,我已经为你找到了一个修复(尽管是一个hack,我猜。)我肯定有更好的方法来做这件事)

发生的事情是,在第14行你的appendRow(array),你是追加数组在它的当前状态第二页;基本上是创建一个数组值的大金字塔。

如果表格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
      }
}

附加行将重置数组并添加您想要复制的行。

让我知道这是否适合你。