Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在同一文档中使用另一脚本中的变量(应用程序脚本)_Google Apps Script_Global Variables - Fatal编程技术网

Google apps script 在同一文档中使用另一脚本中的变量(应用程序脚本)

Google apps script 在同一文档中使用另一脚本中的变量(应用程序脚本),google-apps-script,global-variables,Google Apps Script,Global Variables,我试图从脚本B.gs中的另一个脚本a.gs访问变量。它们都在同一份文件中。我怎么能这样做 我不知道该如何解决这个问题,我是一个应用程序脚本的初学者,在互联网上找不到关于它的任何东西 code.gs: ui = DocumentApp.getUi(); function onOpen () { A = prompt('Hello'); } code2.gs: function onOpen () { if (A === "123") { ui.alert('He

我试图从脚本B.gs中的另一个脚本a.gs访问变量。它们都在同一份文件中。我怎么能这样做

我不知道该如何解决这个问题,我是一个应用程序脚本的初学者,在互联网上找不到关于它的任何东西

code.gs:

ui = DocumentApp.getUi();
function onOpen () {
    A = prompt('Hello');
}

code2.gs:

function onOpen () {
    if (A === "123") {
       ui.alert('Hello')
    }
}
如果在提示符中输入了
123
,我希望输出
Hello
,但是当我尝试运行代码时,我得到了错误:


ReferenceError:未定义“A”。(第3行,文件“代码2”)

  • 在您的情况下,
    code.gs
    code2.gs
    位于一个Google文档的容器绑定脚本类型的项目中
如果我的理解是正确的,那么这个答案呢?请把这看作是几个答案中的一个

修改点: 在脚本中,脚本编辑器将
code.gs
code2.gs
的脚本用作一个项目。因此,在脚本中,项目中有两个相同的函数
onOpen()
。在这种情况下,只运行其中一个。在您的情况下,将运行
code2.gs的
onOpen()
,并且
ReferenceError的错误未定义。
发生

修改脚本: 如果您想修改脚本,并且希望在打开Google文档时使用这些功能,那么下面的修改如何

1.将以下脚本复制并粘贴到脚本编辑器的
code.gs
code2.gs
: 代码G.gs: 代码2.gs: 或者,如果您想独立运行两个函数,那么下面的修改如何?在此修改中,使用PropertiesService保存该值

代码G.gs: 代码2.gs: 或者,您也可以按如下方式进行修改。但是,在您的情况下,这可能不是必需的

function installedOnOpen () {
  var ui = DocumentApp.getUi();
  var A = ui.prompt('Hello').getResponseText();
  if (A === "123") {
    ui.alert('Hello');
  }
}
2.安装OnOpen事件触发器: 为了在打开Google文档时运行installedOnOpen的功能

3.运行脚本: 在您的例子中,有两种运行脚本的模式

模式1: 打开谷歌文档

模式2: 在脚本编辑器中运行
installedOnOpen

如上所述,
installedOnOpen
正在运行。你可以在谷歌文档中看到这个对话框

注:
  • 此修改假定
    prompt()
    函数将
    123
    的值作为字符串值返回。
    • 如果您不能提供
      prompt()
      的脚本,作为测试用例,如何从
      prompt('Hello')进行修改
      to
      ui.prompt('Hello').getResponseText()
参考资料:
    • 我还认为这条线索可能对你有用

如果我误解了你的问题,而这不是你想要的方向,我道歉。

我可以看到你定义了
onOpen
两次。这没有道理


您也不声明变量,这反映在代码的样式中。尝试声明变量,您会发现您的代码无效。

谢谢您的建议!在发布这个问题几个小时后,我意识到我可以做到这一点,它成功了。谢谢你的回答和测试。我很高兴你的问题解决了。
function sample (A) {
    if (A === "123") {
       ui.alert('Hello')
    }
}
var ui = DocumentApp.getUi();
function installedOnOpen () {
    A = prompt('Hello'); // or ui.prompt('Hello').getResponseText();
    PropertiesService.getScriptProperties().setProperty("key", A);
}
function sample () {
    var A = PropertiesService.getScriptProperties().getProperty("key");
    if (A === "123") {
       ui.alert('Hello')
    }
}
function installedOnOpen () {
  var ui = DocumentApp.getUi();
  var A = ui.prompt('Hello').getResponseText();
  if (A === "123") {
    ui.alert('Hello');
  }
}