将列复制到另一个电子表格

时间:2018-04-25 13:36:54

标签: google-apps-script google-sheets

我正在尝试将特定列从一个工作表复制到另一个工作表。我知道我是一个菜鸟,但我已经尝试了很多寻找答案。

正如您所看到的,我正在尝试复制特定列中的值(实际上还有更多),然后按照我控制的顺序将它们复制到另一个电子表格中。

这是我自己的看法。首先,我循环遍历A,C,D,F列,逐个取值,对于每一个,我希望将它们粘贴到循环通过A,B,C,D列作为目标的其他表格中。但它给了我一个错误 “TypeError:无法调用方法”getRange“为null。(第11行,文件”test“)”

function copySheet() { 
 var sourceSheet  =
 SpreadsheetApp.getActiveSpreadsheet().getSheetByName("source");`
 var destSheet  = 
 SpreadsheetApp.getActiveSpreadsheet().getSheetByName("target");`

 var columns_to_be_copied = [1, 3, 4, 6];
 var columns_to_be_pasted = [1, 2, 3, 4];
 var data = []
 for (i = 0; i < columns_to_be_copied.length; i++) {
  var sourcerange = sourceSheet.getRange(2, columns_to_be_copied[i], 
  sourceSheet.getLastRow()-1,1).getValues();
  for (t = 0; t < columns_to_be_copied.length; i++) {
   var targetrange = destSheet.getRange(2, columns_to_be_pasted[t], 
   destSheet.getLastRow()+1,1);
   targetrange.setValues(sourcerange);    
  }
 }
}

另外,我想知道是否有人知道我可以从A:AD(示例)获得任何方式,其中D列中的值(格式化为datetime)在= today() - 90之前?我无法在任何地方找到答案。有没有人对这个问题有参考?

1 个答案:

答案 0 :(得分:3)

如果您只是复制数据,则无需获取值。您可以将范围直接从一个工作表复制到另一个工作表。此修改后的功能实现了将源中的特定列复制到目标工作表中的连续列的第一个目标。

  // count back n days
  Date.prototype.modDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate() - days);
    return date;
  }

关于第二个问题,您可以使用帮助函数来检查日期:

var today = new Date()
var future = today.modDays(90)

在你的函数中,你会使用类似(未经测试的):

this.state.data.map((dynamicData, key) =>
  <a href={"/#/template"} id={dynamicData.id} onClick={() => this.reply_click(this.id)}>{dynamicData.name}</a>
  <a href={"/#/addTeams"}><button type="button" class="btn-lisa">Edit</button></a>