gpt4 book ai didi

javascript - 在 Google 表格中使用命名范围作为变量

转载 作者:行者123 更新时间:2023-11-30 20:18:38 24 4
gpt4 key购买 nike

我正在为 Google 表格中的工作组装一个定价计算器,我已经用 JS 编写了一些函数。它们工作正常。

我遇到的问题是,我希望有人以更少的代码为导向来更改某些变量。

我想在一个单独的电子表格上使用命名范围和所有“设置”。获取这些单元格和值,并使用函数将它们转换为 JS 中的变量。

我已经设法获取命名范围,并将值写入 JS。 (getValues()getNamedRanges()) 但我无法从它们生成变量。我认为这称为动态生成的变量?我试过使用 eval()(这显然不是我读过的好主意)但我也无法让它工作。

我是否需要定义我正在使用的所有变量,而不是根据命名范围及其值生成它们?

我对 JS 比较陌生,所以我不确定我是否遗漏了一些明显的东西!

function convertNamedRangeToVariables() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = SpreadsheetApp.getActiveSheet();
var sa = SpreadsheetApp.getActive();

function getValuesOfNamedRange(x) {
return ss.getRangeByName(x).getValues();
}

var namedRanges = sa.getNamedRanges();

for (var i = 0; i < namedRanges.length; i++) {

var name = namedRanges[i].getName();
var value = getValuesOfNamedRange(name);
Logger.log(name);
Logger.log(value);
eval('var' + name + '=' + value);

}

return
}

最佳答案

您的代码可能有效,但您创建的变量只会在convertNamedRangeToVariables 函数内。

就个人而言,我会为数据创建一个对象(在函数之外)以使其保持全局:

var data = {};

function convertNamedRangeToVariables()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = SpreadsheetApp.getActiveSheet();
var sa = SpreadsheetApp.getActive();

function getValuesOfNamedRange(x)
{
return ss.getRangeByName(x).getValues();
}

var namedRanges = sa.getNamedRanges();

for (var i = 0; i < namedRanges.length; i++)
{
var name = namedRanges[i].getName();
var value = getValuesOfNamedRange(name);
data[name] = value;
}
}

调用convertNamedRangeToVariables 函数后,您就可以引用数据了:

console.log(数据["aNamedRange"]);

关于javascript - 在 Google 表格中使用命名范围作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689431/

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