在同一文档中使用另一个脚本中的变量(应用脚本)

问题描述 投票:0回答:1

我正在尝试从脚本B.gs中的另一个脚本A.gs访问变量。它们都在同一文档中。我该怎么办?

我不确定如何解决此问题,我是应用脚本编写的初学者,在互联网上找不到任何有关此的东西。

code.gs:

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

code2.gs:

function onOpen () {
    if (A === "123") {
       ui.alert('Hello')
    }
}

如果在提示中输入Hello,我希望输出123,但是当我尝试运行代码时,出现错误:

ReferenceError: "A" is not defined. (line 3, file "code2")

google-apps-script global-variables
1个回答
0
投票
  • 根据您的情况,code.gscode2.gs位于Google容器绑定脚本类型的项目中。

如果我的理解是正确的,那么这个答案怎么样?请认为这只是几个答案之一。

修改点:

在您的脚本中,code.gscode2.gs的脚本在脚本编辑器中用作一个项目。因此,在脚本中,项目中onOpen()有2个相同的功能。在这种情况下,仅运行其中之一。在您的情况下,运行onOpen()code2.gs并发生ReferenceError: "A" is not defined.的错误。

修改的脚本:

如果您要修改脚本并且要在打开Goog​​le文档时使用这些功能,那么以下修改如何?

1。将以下脚本复制并粘贴到脚本编辑器的code.gscode2.gs中:

code.gs:
var ui = DocumentApp.getUi();
function installedOnOpen () {
    A = prompt('Hello'); // or ui.prompt('Hello').getResponseText();
    sample(A);
}
code2.gs:
function sample (A) {
    if (A === "123") {
       ui.alert('Hello')
    }
}

或者,如果您想独立运行两个功能,那么下面的修改如何?

code.gs:
var ui = DocumentApp.getUi();
function installedOnOpen () {
    A = prompt('Hello'); // or ui.prompt('Hello').getResponseText();
    PropertiesService.getScriptProperties().setProperty("key", A);
}
code2.gs:
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');
  }
}

2。安装OnOpen事件触发器:

为了在打开Goog​​le文档时运行installedOnOpen的功能,please install the OnOpen event trigger to the funciton of installedOnOpen as the installable trigger.

3。运行脚本:

根据您的情况,有两种运行脚本的模式。

模式1:

打开Goog​​le文档。

模式2:

在脚本编辑器中运行installedOnOpen

以上,运行installedOnOpen。您可以在Google文档中看到该对话框。

注:

  • 此修改假设installedOnOpen的功能返回prompt()的值作为字符串值。
    • 如果无法提供123的脚本作为测试用例,那么如何将prompt()修改为prompt('Hello');

参考文献:

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

© www.soinside.com 2019 - 2024. All rights reserved.