【问题标题】:Google Script gives unknown error谷歌脚本给出未知错误
【发布时间】:2018-11-24 20:56:38
【问题描述】:

谢谢大家。

我有一个包含 7 张工作表的 Google 电子表格。我正在尝试将最后一张表格中的数据从单元格 A1:D1 移动到附加到同一张表格底部的新行。

这是我正在使用的代码的 sn-p:

var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[6];
  var src = sheet.getRange('PaycheckHistory!A1:D1').getValues();
  sheet.appendRow([src]);

运行代码后,在“PaycheckHistory”选项卡上,在附加到工作表底部的新行中,我得到以下内容:“[Ljava.lang.Object;@3e0d05f9”

谁能告诉我(a)这是什么错误,(b)这是什么意思,以及(c)我该如何解决这个问题或执行我的目标,即“从单元格 A1 中移动最后一张工作表中的数据:D1 到附加到同一工作表底部的新行。"

谢谢大家!

2018 年 6 月 22 日 IDK 如果这会有所帮助,但在显示我的原始帖子的屏幕上找不到“更新此问题”按钮。但是,我确实找到了一个“编辑”按钮,我现在正在使用它。

这是我正在使用的完整代码:(如果代码格式不正确,请致歉)

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Tasks')
     .addItem('createCopy','createCopy')
      .addToUi();
}

function createCopy() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[6];
  var src = sheet.getRange('PaycheckHistory!A1:D1').getValues();
  sheet.appendRow(src[0]);

  SpreadsheetApp.flush();

  var myValue = 

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("O58").getValue(); var destinationFolder = DriveApp.getFolderById("1errc7- 2sM**********ZPKJIxjZOTRWo");

DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).makeCopy(myValue,destinationFolder);

}

这是我遇到的问题:函数的第一部分(ABOVE “SpreadsheetApp.flush();”)在电子表格的第 6 页上移动数据。函数的下一部分(BELOW “SpreadsheetApp.flush( );") 复制整个电子表格,将副本放入指定文件夹,然后重命名副本。

我希望此功能在电子表格文件中的其他选项卡/工作表上执行更多操作。我可以编写额外的代码来做到这一点,但是当我将新代码添加到上面的现有函数中时,新代码什么也不做。只需使用“SpreadsheetApp.flush();”不工作。

【问题讨论】:

  • 我的脚本中还有其他代码行。除了这个,一切正常!

标签: google-apps-script


【解决方案1】:

回答(a)

getValues() 检索到的值是二维数组。当它看到appendRow(rowContents) 的用法时,rowContents 是一维数组。在您的脚本中,当运行此 sheet.appendRow([src]) 时,将使用 3 维数组。所以放了这样的字符串。

回答(b)

关于[Ljava.lang.Object;@,您可以在以下线程中查看信息。

回答(c)

为了避免这样的字符串,在你的脚本的情况下,请修改如下。

从 :
sheet.appendRow([src]);
到 :
sheet.appendRow(src[0]);

参考:

如果我误解了你的问题,我很抱歉。

【讨论】:

  • Tanaike - 感谢您提供出色的解决方案!我唯一的问题是脚本的其他部分在添加代码之前工作,现在不再工作。只有您的代码按预期执行。我怎样才能让所有东西一起工作? (注意:其他代码段作用于不同的工作表,有时作用于整个电子表格(所有 7 个选项卡)。
  • OOPS - 使用了错误的词 - 不是“我遇到的唯一问题”,实际上是“我遇到的最直接的问题”...
  • @user3279926 对于给您带来的不便,我深表歉意。我无法理解the other parts of the script。我真的很抱歉我的英语水平不好。
  • 我用“SpreadsheetApp.flush();”分隔每个“块”代码陈述。这使得一切正常。如果我需要第二次复制和粘贴值,但在不同的工作表上使用不同的单元格范围,我该怎么做?
  • @user3279926 很遗憾,我找不到“clump”和“SpreadsheetApp.flush();”在你的问题中。我无法理解你的最新情况。你能提供你最新的脚本吗?因为我的回答是针对您当前的问题。我真的很抱歉我的技能不好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多