Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组。按不添加到数组末尾_Javascript_Google Apps Script - Fatal编程技术网

Javascript 数组。按不添加到数组末尾

Javascript 数组。按不添加到数组末尾,javascript,google-apps-script,Javascript,Google Apps Script,编辑单元格并记录数组输出时,PUSH函数未将新编辑的单元格添加到数组的末尾;它只输出一个元素,几乎就像每次编辑单元格时都在重新创建数组一样 var EnteredDates=[]; 功能OneEdit(e){ var范围=e范围; EnteredDates.push([range.getValue(),range.getA1Notation()]); } 推送时正在重新创建的数组 如@ktilcu所述,.push()的情况并非如此,原始数组已被修改,未创建新数组 由于您的问题中没有任何代码示例

编辑单元格并记录数组输出时,PUSH函数未将新编辑的单元格添加到数组的末尾;它只输出一个元素,几乎就像每次编辑单元格时都在重新创建数组一样

var EnteredDates=[];
功能OneEdit(e){
var范围=e范围;
EnteredDates.push([range.getValue(),range.getA1Notation()]);
}
推送时正在重新创建的数组

如@ktilcu所述,
.push()
的情况并非如此,原始数组已被修改,未创建新数组

由于您的问题中没有任何代码示例,我假设您正在执行以下操作:

var cells=['cell 1'、'cell 2'、'cell 3'];

console.log(cells.push('cell 4'))我在让全局数组工作时遇到了类似的问题。所以我用了下面的方法

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet177')return;
  pushArray(e.value + "," + e.range.getA1Notation());
  e.source.toast(e.value + ', ' + e.range.getA1Notation());
}

function pushArray(value) {
  PropertiesService.getScriptProperties().setProperty('array', PropertiesService.getScriptProperties().getProperty('array') + ',' + value)
}

function getArray() {
  return PropertiesService.getScriptProperties().getProperty('array');
}

function runOne() {
  SpreadsheetApp.getUi().alert(getArray());
}

function runTwo() {
  PropertiesService.getScriptProperties().setProperty('array', '');
}

runOne和runTwo是内置在我的菜单中的函数,因此使用这些函数名可以避免我一直将它们添加到我的菜单中。

代码在哪里?你有代码吗?我的猜测是,您希望push返回新数组,但它没有。它只返回新数组的长度。原始数组已被修改。
在OnOpen函数中启动它
->似乎每次调用函数时,数组都被设置为空数组i:e
arrayName=[]
,这将删除已插入的元素并重新启动为空数组。如果需要精确答案,请提供代码。抱歉,各位,我不确定网站发生了什么;我以为我输入了密码。请刷新,您现在可以看到它了。很简单。。只是一个推送功能OnEdit@Phil...Just想指出的是,Google Apps脚本不支持
let
声明。我已经尝试在所有代码之上全局启动一个新数组,并且还尝试在OnOpen函数内启动一个新数组(var EnteredDates=[];)。上面的编码就是我正在做的,我指的是在记录器中输出数组的数组“EnteredDates”。谢谢;你能详细说明一下编码在做什么吗。你是说推送不起作用,还是说如果你想在OnEdit中使用它,它不是你推送数组的方式?我不知道。我可能猜触发器没有访问全局作用域的权限,但我真的不知道。我对此考虑了很久,我认为真正的问题是全局声明在每次onEdit(e)函数调用时都会执行。