繁体   English   中英

Google Apps脚本全局数组功能不可编辑

[英]Google apps script global array not editable in function

我在Google Apps脚本中写了一个小脚本,它创建了一个数组,当您按下按钮时,应该在数组中添加“测试”,然后打印整个数组。 因此,当您第一次按下按钮时,它应该显示1个“测试”。 当您第二次按下它时,它应该显示第一个测试以及包含2个“ test”的新数组,因此总共显示3个“ test”。 但事实并非如此。 不知何故,当它从“ buttonPress”函数中消失时,整个数组将被删除或删除。 有人可以解释吗? 谢谢!

 var list = new Array;
function doGet() {
  var app = UiApp.createApplication()
  var panel = app.createVerticalPanel().setId('id')
  var button = app.createButton('Button')
  var handler = app.createServerHandler('buttonPress')
  button.addClickHandler(handler)
  app.add(panel)
  panel.add(button)
  return app;
}
function buttonPress(){
list.push('test')
var app = UiApp.getActiveApplication()
var panel  = app.getElementById('id')
var panel2 = app.createVerticalPanel()
var length = list.length
for(var i = 0; i< length; i++){
panel2.add(app.createHTML(list[i]))
}
}

GAS并不是您的日常Javascript,每当您按一下ButtonPress时,就会编译整个代码,然后执行,只需阅读您已经知道的代码, list就会重新实例化为一个空数组。

2边注:

UiApp已被弃用,必须切换到HTMLService。

Javascript中的数组最好初始化为[] 在所有文档中,这都是首选方法。

简单地说,您的函数buttonPress()甚至不知道什么list ,因为您尚未在函数调用中声明或定义它。

如果代码是您正在运行的确切代码,我会注意到var list = new Array; 不能通过任何功能到达。

如果需要,可以使用JSON.stringify()方法和JSON使用PropertiesService.getScriptProperties().setProperty('name',string)PropertiesService.getScriptProperties().getProperty('name')存储数组。 parse()返回数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM