将数据从一个单元格复制到另一个单元格 - Google脚本

时间:2017-06-01 00:23:16

标签: google-sheets

我在谷歌电子表格中使用谷歌脚本将数据从一个单元格复制到另一个单元格时出现问题。我可以获得我想要的细胞的价值,但我有问题将它复制到不同的细胞。这是我的代码。

var sourceSS = SpreadsheetApp.openById(logKey);
var value = sourceSS.getSheetByName(sourceSheetName).getRange(sourceCell).getValue();
var logSS = SpreadsheetApp.openById(logKey);
var sheet = logSS.getSheetByName(logSheetName);
logSS.getSheetByName(logSheetName).getRange(logCell).setValue(value);

我现在已经更改了我的代码,如下图所示,并显示错误。 Error

2 个答案:

答案 0 :(得分:1)

更新(6-2-17)

如果您在同一个SpreadSheet中登录,则此代码可能有效:

var ss = SpreadsheetApp.openById(logKey);
var value = ss.getSheetByName(sourceSheetName).getRange(sourceCell).getValue();
ss.getSheetByName(logSheetName).getRange(logCell).setValue(value);

首先,您是否意识到您对记录器和源电子表格使用了两次logKey?在这两种情况下(第1行和第3行),您都有:SpreadsheetApp.openById(logKey),打开相同的电子表格。

我制作了两个电子表格并运行了您的代码,切换了参考变量:

function myFunction() {
  var sourceSS = SpreadsheetApp.openById("wefdf5y65t45tO45tWy544f8hc10kdjEfgrrf4H-f48u");
  var value = sourceSS.getSheetByName("SourceSheet").getRange("A1").getValue();
  var logSS = SpreadsheetApp.openById("f4h738H9GH07ghTf5rtfYtrf4h67566dytrdhe478293");
  var sheet = logSS.getSheetByName("Sheet1");
  logSS.getSheetByName("Sheet1").getRange("A1").setValue(value);
}

它完美运行并正确填充到日志记录电子表格中,因此这意味着您的代码中的以下变量之一已关闭(我无法看到您如何声明它们):

  • logKey
  • sourceSheetName
  • sourceCell
  • logSheetName
  • logCell

我收到错误消息:TypeError:无法调用null的方法“getRange”。

  • 同样,当我弄乱上面的变量,特别是sourceSheetName时,会发生这种情况。例如,如果我将该变量设置为“SourceShe”而不是“SourceSheet”,那么Google表格无法找到它并且它为空。

我认为你所有的问题都是因为在预先声明变量时会出现一些拼写错误。

答案 1 :(得分:1)

感谢奥古斯丁的帮助。我在电子表格中打开正确的表格时遇到了问题。这是我的解决方案:

var ss = SpreadsheetApp.openById(logKey);
var value = ss.getSheetByName(sourceSheetName).getRange(sourceCell).getValue();
ss.getSheetByName(logSheetName).getRange(logCell).setValue(value);

关键是验证我有正确的变量名称,而我并没有尝试两次打开相同的电子表格。