javascript - 转置数组时出现 “This operation is not supported from a callback function” 错误

标签 javascript google-apps-script callback google-sheets

首先对这个问题表示歉意,但 GAS 对我来说是一种新语法。 我想做一些在 VBA 语法中很简单的事情,但在 GAS 中却不行。

我想在不同的工作表上将一个命名范围转置为另一个命名范围(例如,从 4 行到 4 列)。网络上有使用 .getDataRange() 的示例,但我希望使用固定的命名范围,无论其中是否包含数据。

我使用的语法如下:

var wksInput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('New');
var wksDB = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Database');
var intDBNewRow = wksDB.getLastRow() + 1;

wksDB.getRange(intDBNewRow, wksDB.getRange('dbContacts').getColumn(), 1,wksDB.getRange('dbContacts').getNumColumns()).setValues(transposeRange(wksInput.getRange('frmVanContacts').getValues())); 

从输入表单工作表 (wksInput) 上的固定点取 4 行到记录集/数据库工作表 (wksDB) 最后一行的 4 列

transposeRange 是:

function transposeRange(a)
{
  return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}

错误是:

This operation is not supported from a callback function.

这里有什么问题吗?

最佳答案

回答

问题不在于转置函数,问题在于 Google Apps 脚本调试器无法按设计执行回调,因此在调试代码时,不要执行调试步骤,而是在之前放置一个断点并在调用转置函数之后使调试器跳过该调用。

引用资料

在 Google Apps Script Issues 中有一个关于此的问题 -> Issue 4662: Debug breakpoint within the function body of an Array.map() call causes a server error有来自 Google 员工的以下评论

来自 https://code.google.com/p/google-apps-script-issues/issues/detail?id=4662#c3

This is currently working as intended -- we do not support debugger breakpoints withing callback functions. This issue will therefore be marked as a Feature request.

一个没有答案的相关问题,但有帮助我找到上述引用的信息性评论

Debugger fails with "This operation is not supported from a callback function."

关于javascript - 转置数组时出现 “This operation is not supported from a callback function” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619480/

相关文章:

Javascript - 无法获取仅接受设置密码的登录脚本

javascript - 使用 QtWebEngine 在 Qt 中将 C++ 对象暴露给 Javascript

javascript - 在 .gs 函数中提示用户输入范围,将数组传递给 html 脚本并重新关注 HTML 对话框

c# - 如何通过 C++-CLI 回调和委托(delegate)将字符串从 C++-CLI 传递到 C#

javascript - JQuery追加循环回调函数

javascript - 如果 JSON-LD 没有 ID,有没有办法通过 JavaScript 访问它?

javascript - Google Apps 脚本 - JDBC 连接失败

javascript - 在 Apps Script Web App 中实现一个 slider 。 oninput 事件未触发

javascript - 在 setTimeout() 中将参数传递给匿名函数

javascript - 如何使 HTML 多选行为像始终按住控制按钮一样