javascript - 无法将 Object.assign 添加到 Google 表格

标签 javascript google-apps-script google-sheets

我在 Google 表格中的 utils.gs 文件中添加了类似的内容:

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
};

在同一个脚本文件中,我定义了一个依赖于Object.assign的函数,但我总是收到错误消息:

TypeError: Cannot find function assign in object function Object() { [native code for Object.Object, arity=1] }.

知道为什么我无法添加它吗?

最佳答案

这是模块系统中的某种错误。

此代码有效:

ma​​in.gs

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
  return target;
};

Logger.log(Object.assign({}, {a:1}));

function main(){
  Logger.log(Object.assign({}, {a:1}));
}

但是如果我将Object.assign移动到一个单独的文件:

ma​​in.gs

Logger.log(Object.assign({}, {a:1}));

function main(){
  Logger.log(Object.assign({}, {a:1}));
}

分配.gs

Object.assign = function (target, source){
  if (!target || !source)
    throw new Error("Invalid arguments.");
  for (var property in source)
    if (source.hasOwnProperty(property))
      target[property] = source[property];
  return target;
};

那么只有第二个 Object.assign() 起作用,它在 main() 函数中调用。如果我定义并调用 assign() ,那么两者都有效。

请注意,这通常不是问题,因为您通常不会将这两行添加到 main.gs 中。如果您使用实用函数来帮助创建原型(prototype),那么最好将每个构造函数和原型(prototype)定义移动到单独的文件中,而不是在 main.gs 中定义它们。这样您就不会遇到此类问题,甚至可以在其他实用函数和定义中使用 Object.assign

关于javascript - 无法将 Object.assign 添加到 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282082/

相关文章:

google-sheets - COUNTA 是否计算新 Google 电子表格中的空白(空)单元格?

google-apps-script - 在应用程序脚本中获取谷歌表格的最新更新

javascript - 时髦的解密和加密算法

javascript - 使用 jquery 突出显示页面中的所有逗号

google-apps-script - 用户撰写邮件时的 Gmail 插件操作

google-apps-script - HTML 服务 - 未捕获的网络错误 : Form submission failed

javascript - 如何使用javascript读取txt文件并将内容复制到谷歌电子表格文件中

javascript - 在 Javascript 中从 HTML 表单获取数据总是会产生字符串?

javascript - 使用 FormData 和 multer 上传文件

authentication - BigQuery - GSheet 表上的脚本运行查询不起作用