我是Google Sheets/JavaScript的新手。我必须将VBA Excel应用程序移植到谷歌图纸。
Excel应用程序包含许多使用选项卡上的值(>2000值(的公式。在Excel中,它从一开始就导入所有参数,然后用全局变量提供给公式,以避免访问每个公式调用。
如何读取一个大数组并将其存储在Google Sheets中的一个全局变量中?我在谷歌上搜索,似乎我必须使用PropertiesService
,但它对我不起作用。
我的代码:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var SS = spreadsheet.getSheetByName('Calibrated_Values')
var values = SS.getRange("A:A").getValues();
var scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty('setnumber', range)
var GetProp= scriptProperties.getProperty('setnumber');
for (var i=0;i<10;i++) {
Logger.log('%d', GetProp));
}
感谢
在正确的轨道上。问题是,根据这个:
属性服务将所有数据存储为键值对中的字符串。还不是字符串的数据类型会自动转换为字符串,包括保存对象中包含的方法。
如果您尝试直接保存getRange
的结果,则最终会存储类似[Ljava.lang.Object;@3cdd0c95
的内容。
这里的简单解决方案是我们可以使用JSON.stringify
来保存数据:
function setNumber()
{
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let SS = spreadsheet.getSheetByName('Calibrated_Values');
let values = SS.getRange("A:A").getValues();
let scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty('setnumber', JSON.stringify(values));
}
要检索它,请使用JSON.parse
:
function getNumber()
{
let scriptProperties = PropertiesService.getScriptProperties();
let prop = JSON.parse(scriptProperties.getProperty('setnumber'));
// Prop is now an array:
console.log(prop);
}