Javascript 如何在Google脚本中将对象数组作为全局变量传递
我有一个从JS传递到GS的对象数组。 下面是一个对象数组的外观示例(根据用户输入而变化) 在我的代码中,我需要从这个数组中调用一些数据。比如说Javascript 如何在Google脚本中将对象数组作为全局变量传递,javascript,google-apps-script,Javascript,Google Apps Script,我有一个从JS传递到GS的对象数组。 下面是一个对象数组的外观示例(根据用户输入而变化) 在我的代码中,我需要从这个数组中调用一些数据。比如说 var roleList = playersArray.map(function(role) {return role.role;}); Browser.msgBox(playersArray[1]["role"]); 当我在函数之间直接传递这个PlayerArray时,一切都很好。 不幸的是,对于我的一个函数,我需要在不直接传递它的情况下提取这个数
var roleList = playersArray.map(function(role) {return role.role;});
Browser.msgBox(playersArray[1]["role"]);
当我在函数之间直接传递这个PlayerArray时,一切都很好。
不幸的是,对于我的一个函数,我需要在不直接传递它的情况下提取这个数组
因此,我将playerArray设置为GS中的一个属性
PropertiesService.getScriptProperties().setProperty('playersArray', JSON.stringify(playersArray));
然后,我在相关函数中使用getProperty来获取此数组:
var playersArray = PropertiesService.getScriptProperties().getProperty('playersArray');
playersArray = playersArray.replace(/\"/g, "").replace(/\:/g, "=");
playersArray = playersArray.split(",");
由于某些原因,执行此操作时函数无法正确查看数组:
var roleList = playersArray.map(function(role) {return role.role;});
Browser.msgBox(playersArray[1]["role"]);
请帮我解决这个问题。如果我用于将阵列作为全局传递的解决方案不可行,我很高兴看到其他解决方案。但是它必须是全局的,因为我不能在函数之间直接传递数组。- 您希望将数组对象置于PropertiesService
- 从PropertiesService检索阵列对象时,您希望使用
作为阵列对象PlayerArray
- 请注意财产服务的配额。
- 属性值大小为9kB/val
- 物业总存储容量为500kB/物业存储
- 我认为在您的脚本中,
可能类似于playersArray
。因为在将对象放入PropertiesService之前,var playersArray=[{编号:1,角色:“纵火犯”,死亡状态:false,guardianTargetStatus:false,executionerTargetStatus:false,roleblockStatus:false},,]
。当您通过Browser.msgBox(playerArray[1][“role”])
查看Logger.log(playersArray)
时,您可能会看到像playersArray
。当var playersArray=[{number=1,role=arsister,death status=false,guardianTargetStatus=false,executionerTargetStatus=false,roleblockStatus=false},,]
是对象时,当对象被playersArray
看到时,Logger.log(playersArray)
将转换为:
。我认为这是谷歌应用程序脚本的规范。因此,使用=
放入PropertiesService的对象可以使用JSON.stringify()
转换为对象JSON.parse()
如果我误解了你的问题,我道歉。非常感谢!这解决了我的问题。我花了4天的时间试图解决这个问题,结果非常接近:)@Ilya Perelman谢谢你的回复。我很高兴你的问题解决了。
var roleList = playersArray.map(function(role) {return role.role;});
Browser.msgBox(playersArray[1]["role"]);
var playersArray = PropertiesService.getScriptProperties().getProperty('playersArray');
playersArray = playersArray.replace(/\"/g, "").replace(/\:/g, "=");
playersArray = playersArray.split(",");
var playersArray = PropertiesService.getScriptProperties().getProperty('playersArray');
playersArray = JSON.parse(playersArray);