GAS 中 3 个匿名函数的不同输出

2023-12-26

我有个问题。

In the google.script运行的正式网页 https://developers.google.com/apps-script/guides/html/reference/run?authuser=0#myFunction(...),他们说您可以使用 google.script.run 从客户端调用“任何服务器端函数”。

在下面的 gs 文件中,我使用普通函数表达式定义了函数“hoge”。(“this!”行)

如果我执行这种情况,输出是浏览器上显示的随机 1-4 个数字

顺便说一句,我尝试改变函数“hoge”的定义风格。我使用匿名函数创建了 3 个模式。 (所有这些都是使用“hoge(vv)”从客户端调用的)

  1. var hoge = function hoge(x){return x;};(双方都使用“hoge”关键字)→然后这与正常函数定义样式相同。
  2. var hoge = function (x){return x;};(只留下使用“hoge”关键字)→错误
  3. var hogeNot = function hoge(x){return x;};(仅使用“hoge”关键字正确)→ 错误

问:为什么“1”工作正常,但“2”却出错。

谢谢。

// gs file

var x;

function doGet() {
    return HtmlService.createTemplateFromFile("hello").evaluate(); // テンプレートオブジェクトの取得
}

function hoge(x){ // this!
  return x;
}
// html file

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <p id="wi">hello</p>
    <script>
    function success(get){
      document.getElementById("wi").insertAdjacentHTML("afterend","<p>" + get + "</p>");
    }

    for (var v=1; v <= 4; ++v){ // aaを4回呼ぶ
      aa(v);
    }

    async function aa(vv){
      await google.script.run.withSuccessHandler(success).hoge(vv);
    }
    </script>
  </body>
</html>

问:为什么“1”工作正常,但“2”却出错。

对于这个问题,这个答案怎么样?请将此视为几个可能答案之一。

实验:

在 Google Apps 脚本中,似乎当可以使用脚本编辑器识别该函数并且可以在以下位置查看该函数时this,该函数可以直接运行。用于检查该函数是否包含在this,可以使用以下脚本。

示例脚本:

function myFunction() {
  for (var i in this) {
    if (i == "hoge") {
      Logger.log("%s, %s", i, typeof this[i])
    }
  }
}

About var hoge = function hoge(x){return x;};

在这种情况下,函数hoge可以在脚本编辑器中看到,并且该功能可以由脚本编辑器直接运行。而且,上面的脚本返回hoge, function.

About var hoge = function (x){return x;};

在这种情况下,函数hoge当上面的脚本返回时,在脚本编辑器中无法看到hoge, function. And hoge无法直接运行,因为在脚本编辑器中看不到它。

当这个函数的hoge从其他函数运行,脚本有效。

About var hogeNot = function hoge(x){return x;};

在这种情况下,函数hogeNot在脚本编辑器中看不到。但其功能是hoge可以在脚本编辑器中看到。当函数为hoge通过脚本编辑器运行,会出现找不到函数之类的错误。在上面的脚本中,i == "hoge"总是false。但当i == "hogeNot"用于 if 语句,hogeNot, function被返回。

当这个函数的hogeNot从其他函数运行,脚本有效。但是当这个函数hoge从其他函数运行时,会发生错误。

Result:

从以上情况来看,认为为了运行google.script.run,需要能够在脚本编辑器中直接运行该函数。我想这可能是Google方面的规范。

如果我误解了你的问题并且这不是你想要的方向,我很抱歉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GAS 中 3 个匿名函数的不同输出 的相关文章

随机推荐

  • Flutter Firebase 存储无法工作:没有默认存储桶

    我正在尝试上传一个pdf file to Firebase Storage使用此功能 static Future
  • Django ModelForms:将ManyToMany字段显示为单选

    在 Django 应用程序中 我有一个模型 Bet 其中包含与 Django 用户模型的 ManyToMany 关系 class Bet models Model participants models ManyToManyField Us
  • 触发AWS代码构建时指定文件路径

    我已经创建了 AWS codebuild 管道 每当我推送到主分支时它就会自动触发 现在 我只想在 Dockerfile 中发生更改时触发它 以下是我的项目结构 casestudy gt Docker gt Dockerfile gt In
  • “图标路径无效” - Apple App Store 团队返回错误

    这是我第一次向 App Store 提交内容 遇到了很多问题 首先 我要说的是 该应用程序是用PhoneGap 使用科尔多瓦1 9 0框架 它的 Web 应用程序端很好 验证了 W3 并且在浏览器中完美运行 在无法手动修复问题后 我从头开始
  • 如何在 PlayFramework 中的 Json Reads 中添加自定义 ValidationError

    我正在使用 play Reads 验证助手 我想在 json 异常的情况下显示一些自定义消息 例如 长度是最小值然后指定或给定的电子邮件无效 我知道 play 显示这样的错误消息error minLength但我想显示一条合理的消息 例如请
  • 在 Mayavi 中锁定相机

    我正在尝试使用 mayavi 中的一系列数据文件制作动画 不幸的是 我注意到相机没有锁定 它正在变焦和缩小 我认为发生这种情况是因为我的网格的 Z 分量正在变化 并且 Mayavi 正在尝试重新计算比例 How can I fix it i
  • 使用每个用户数据的单独密钥加密 SQL Server Azure 数据库中的数据

    我正在尝试创建基于 Azure SQL 数据库后端的服务 该服务将是多租户的 并将包含来自多个 客户端 可能有数十万 的高度敏感信息 这些信息必须彼此严格隔离并严格防止数据泄漏 按设计 使用如此多的单独数据库是不可行的 因为会有很多客户 但
  • 将背景颜色的下边缘设为另一种颜色

    我想要我的底部background color成为另一种颜色 我确信这涉及到linear gradient 但不确定如何实施 示例代码 background height 100px width 200px background color
  • 在python多处理中修改对象

    我有大量自定义对象 需要对其执行独立 可并行 任务 包括修改对象参数 我尝试过使用 Manager dict 和 sharedmem ory 但两者都不起作用 例如 import numpy as np import multiproces
  • 用 Celery 组合链、组和块

    我想使用 Celery 作为 URL 抓取器 我有一个 Url 列表 我必须对每个 URL 执行 HTTP 请求并将结果写入文件中 整个列表使用同一文件 我的第一个想法是让 Celery 调用的任务中的这段代码击败所有n分钟 app tas
  • AzureADB2C.UI - 登录后将用户重定向到页面

    我在 NET Core Web 应用程序上使用 AzureADB2C UI 但我不确定如何将用户重定向到自定义页面 ej Customers Index他登录后 这基本上就是我以前使用时的情况SessionController但由于我使用的
  • 如何强制用户在 GIT 中使用小写电子邮件地址

    我正在寻找确认提交者的电子邮件地址是否为小写的可能性 以避免出现以下问题this https serverfault com questions 12373 how do i edit gits history to correct an
  • 使用新的 TextInputLayout 进行 EditText 的渲染问题

    我正在尝试设置新的 support desing 库 为旧的 Android 版本提供一些棒棒糖视觉效果 在本例中 我尝试为 edittext 添加浮动标签 这是通过 widget TextInputLayout 完成的 为此 我遵循了谷歌
  • AS3中void的意义是什么

    这里有一个简单的问题 当 void 跟随 AS3 中的函数时 它在做什么 public function sayGoodbye void trace Goodbye from MySubClass voidtype 向编译器指示您编写的函数
  • 发出 HTTP 请求时出现 Access-Control-Allow-Origin 错误

    您好 我正在通过 OAuth 2 0 对用户进行身份验证 并且收到 Access Control Allow Origin 错误 XMLHttpRequest cannot load https www box com api oauth2
  • java中可以进行“原子”中断检查吗?

    例如 如果在 Java 中使用以下带有中断的 习语 从这个答案 https stackoverflow com questions 14145787 how to safely interrupt a thread with critial
  • 从 Telegram 的机器人 API 获取投票结果和用户选择

    我想知道是否有办法使用机器人 API 查找用户对非匿名投票的回复 我可以获得投票数 但我想知道特定用户的实际选择 是的 对于非匿名民意调查 当用户投票时您会收到更新 这些是更新update poll answer see https cor
  • 在 Elixir 中打开模块?

    Ruby 有开放类 非常方便 尽管受到一些人的谩骂 而 Elixir 大量借鉴了 Ruby 所以我希望 Elixir 允许我重新打开一个模块并在关闭它后向其中添加宏 但这在我尝试的方式 有什么方法可以做到这一点吗 Elixir 中是否提供此
  • Logcat过滤?

    我想过滤掉日志中的所有内容 除了我的应用程序的进程 我知道我可以指定优先级 但我希望能够做更多的事情 我想删除手机中正在记录的所有其他内容 我怎样才能做到这一点 如果您在 Eclipse 调试视图中查看日志 只需单击 创建过滤器 按钮 绿色
  • GAS 中 3 个匿名函数的不同输出

    我有个问题 In the google script运行的正式网页 https developers google com apps script guides html reference run authuser 0 myFunctio