Javascript 数组。按不添加到数组末尾
编辑单元格并记录数组输出时,PUSH函数未将新编辑的单元格添加到数组的末尾;它只输出一个元素,几乎就像每次编辑单元格时都在重新创建数组一样Javascript 数组。按不添加到数组末尾,javascript,google-apps-script,Javascript,Google Apps Script,编辑单元格并记录数组输出时,PUSH函数未将新编辑的单元格添加到数组的末尾;它只输出一个元素,几乎就像每次编辑单元格时都在重新创建数组一样 var EnteredDates=[]; 功能OneEdit(e){ var范围=e范围; EnteredDates.push([range.getValue(),range.getA1Notation()]); } 推送时正在重新创建的数组 如@ktilcu所述,.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:earrayName=[]
,这将删除已插入的元素并重新启动为空数组。如果需要精确答案,请提供代码。抱歉,各位,我不确定网站发生了什么;我以为我输入了密码。请刷新,您现在可以看到它了。很简单。。只是一个推送功能OnEdit@Phil...Just想指出的是,Google Apps脚本不支持let
声明。我已经尝试在所有代码之上全局启动一个新数组,并且还尝试在OnOpen函数内启动一个新数组(var EnteredDates=[];)。上面的编码就是我正在做的,我指的是在记录器中输出数组的数组“EnteredDates”。谢谢;你能详细说明一下编码在做什么吗。你是说推送不起作用,还是说如果你想在OnEdit中使用它,它不是你推送数组的方式?我不知道。我可能猜触发器没有访问全局作用域的权限,但我真的不知道。我对此考虑了很久,我认为真正的问题是全局声明在每次onEdit(e)函数调用时都会执行。