gpt4 book ai didi

google-apps-script - 谷歌脚本 : Define Variable from Library

转载 作者:行者123 更新时间:2023-12-04 15:55:17 27 4
gpt4 key购买 nike

我设置了一个 Google 脚本来从 mySQL 数据库中获取数据。该脚本是通过首先为访问凭证定义变量来设置的。例如:

var host = '123.45.67.89';
var user = 'username';
var password = 'password';
var port = '3306';

我的问题:这些凭证可能会改变。如果它们确实发生了变化,我将不得不在每个脚本、每个使用它们的电子表格中进行更改。

我认为解决方案是设置一个用作库的脚本,其唯一目的是定义这些变量。所以,所有这个脚本都是:

function setCredentials() {
var host = '123.45.67.89';
var user = 'username';
var password = 'password';
var port = '3306';
}

一旦它被设置为一个库,保存为“DBCredentials”,我将设置每个 SQL 抓取脚本来简单地调用该库中的那些变量。但我无法让它工作。我确定我只是错过了从库中调用变量的正确方法,但我没有运气使用谷歌找到答案。

我确实找到了这个: Defining globals in Google Apps Script that can be used across multiple projects

据此,我将使用以下方式调用变量:

var host = SpreadsheetApp.openById( DBCredentials.host );

但是当我这样做时,我收到了“Bad value”错误。我也试过:

var user = DBCredentials.user;

但这也行不通。该脚本将运行,但检查访问日志显示名为“undefined”的用户试图访问数据库。

从库脚本调用变量的正确方法是什么?

最佳答案

桑迪的第二条评论让我找到了答案:

A GLOBAL can be set from inside of a function, but you can't use var inside the function or the variable will be scoped to the inside of the function. So, declare your global's outside of any function, and if you want to set the value of the globals from inside of a function, then don't use var

我的错误是设置了我的库脚本文件,即带有凭据的文件。我将带有设置凭据(主机、用户、密码、端口)的 var 放在一个函数中,如下所示:

function getCredentials() {
var host = '123.45.67.89';
var user = 'username';
var password = 'password';
var port = '3306';
}

这是我不正确的地方。我对此很陌生,所以我假设所有脚本都必须有一个函数才能运行。将变量放在一个函数中会使这些变量的范围仅限于该函数,这就是为什么当其他脚本调用这些变量时它们不传输 OUT 的原因。

我只是删除了变量周围的函数,将库脚本更改为仅此而已:

  var host = '123.45.67.89';
var user = 'user';
var password = 'password';
var port = '3306';

然后我能够使用以下命令从容器绑定(bind)脚本(绑定(bind)到电子表格的脚本)中调用这些变量:

  var host = DBCredentials.host;
var user = DBCredentials.user;
var password = DBCredentials.password;
var port = DBCredentials.port;

(DBCredentials 是为库脚本选择的标识符。)它现在可以完美运行。非常感谢您的帮助!

关于google-apps-script - 谷歌脚本 : Define Variable from Library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com