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

标签 javascript google-apps-script spreadsheet google-drive-api

我无法让这个功能工作。它必须将电子表格“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(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
      }
}

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

请告诉我这是否适合您。

关于javascript - 将工作表复制到另一个电子表格 [Google Apps 脚本],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909736/

相关文章:

javascript - 单击按钮后更改 bool 值的状态

javascript - 无法在 Vue 2 和 Axios API 调用上设置实例属性

javascript - 在 Javascript 中获取第一个数字出现后的子字符串

javascript - Google 脚本 Javascript 日期错误

javascript - 如何遍历 v8 中全局对象(库)的所有属性/函数?

google-apps-script - Google 表单中的隐藏字段

vba - 什么是worksheet.Cells(row,col).Formula

javascript - 如何创建一个带有“查看更多”选项的下拉按钮,并且单击切换不应在React js中发生?

vba - 带循环的复杂 Excel VBA 宏

java - 电子表格程序