我一直试图解决这个问题,但似乎无法让它发挥作用。
function Manager() {
var units = new Array(5,9);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:P16");
var x = 0;
var y = 0;
//Initial Setup
/*for(var i = 1; i <= 2; i = i + 1) {
units[i*2, 1] = 8+((i*2)-3);
units[(i*2) + 1, 1] = 8+((i*2)-3)*5;
units[i*2, 2] = 8+((i*2)-3)*(-1);
units[(i*2) + 1, 2] = 8+((i*2)-3)*5;
units[i*2, 3] = 8;
units[(i*2) + 1, 3] = 8+((i*2)-3)*5;
units[i*2, 4] = 8;
units[(i*2) + 1, 4] = 8+((i*2)-3)*6;
units[i*2, 5] = 8+((i*2)-3)*(2);
units[(i*2) + 1, 5] = 8+((i*2)-3)*7;
units[i*2, 6] = 8+((i*2)-3)*(4);
units[(i*2) + 1, 6] = 8+((i*2)-3)*7;
units[i*2, 7] = 8+((i*2)-3)*(-4);
units[(i*2) + 1, 7] = 8+((i*2)-3)*7;
units[i*2, 8] = 8+((i*2)-3)*(-2);
units[(i*2) + 1, 8] = 8+((i*2)-3)*7;
units[i*2, 9] = 8;
units[(i*2) + 1, 9] = 8+((i*2)-3)*7;
}
for(var i = 1; i <= 9; i = i + 1) {
units[1,i];
x = units[3,i];
y = units[2,i];
var cell = range.getCell(x,y);
}
结果应该是数字1到9放置在有点组织的模式中并镜像在9行标记处。例如,单位[3,1]应该是3,单位[2,1]应该是7,但它给出的结果是14和14.总结果在N14中显示3,在O15中显示4,在9中显示P16。我在最后一个“for”循环上尝试了一些调试,前两次1和2也被放置在N14中并被覆盖,P16中的5到9的所有内容也被覆盖。关于为什么最后一个for循环没有实际给出正确坐标的任何想法
答案 0 :(得分:0)
您似乎尝试创建5x9二维数组,但您尝试使用它的方式在Javascript(Google Apps脚本所基于的)中无效。看看How can I create a two dimensional array in JavaScript?。
在整个代码中,数组被不正确地编入索引。指数应该是分开的,例如units[3][1]
。当您提供列表时,例如[3,1]
,最后一项用作索引。这就是你看到14
重复的原因。此外,您应该记住,数组从0开始编制索引。
这样的改变会使你的代码操纵一个二维数组:
...
//Initial Setup
var units = new Array();
for(var i = 1; i <= 2; i = i + 1) {
units[i*2] = new Array();
units[(i*2) + 1] = new Array();
units[i*2][1] = 8+((i*2)-3);
units[(i*2) + 1][1] = 8+((i*2)-3)*5;
...
以下是初始设置后调试器中出现units
的方式,间隙明显: