我尝试使用Google Apps脚本与Google表格进行通信,以执行以下操作: 我们正在尝试将数据从一个销售点系统转换为新系统。为了做到这一点,我需要获取工作表的某些列,以各种方式操作它们,并使用结果数据重新填充另一个工作表。我需要找到没有SKU编号的产品,并为它们分配一个新的产品,从10110开始并从那里开始递增。
function sku() {
// "From" Spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("New POS Data");
// "To" Spreadsheet
// Spreadsheet key: the string at the end of the URL
var ssraw = SpreadsheetApp.openById("1BH-j4cOW9Ntg6FlPNXmNCUId_pm9BgyAh0cwrwB4z_A");
var sheetraw = ssraw.getSheetByName("Old POS Data");
var max = sheet.getLastRow();
// SKU / UPC
var range = sheetraw.getRange(2,18,max);
var data = range.getValues();
// Assign new sku if no old one
var skunum=[10110];
var newData = new Array();
for (var y = 0; y <= max; y++) {
if (data[y]==""){
newData.push(skunum);
skunum++;
var skunum=[skunum];
}
else {newData.push(data[y]);}
}
sheet.getRange(2,3,max).setValues(newData);
}
&#13;
这给了我错误&#34;不正确的范围高度,为1但应该是30(第26行,文件&#34; SKU&#34;)&#34;
如果我删除最后一行中newData周围的括号,我得到&#34;无法将数组转换为Object [] []。 (第27行,文件&#34;&#34;)&#34;
这让我很精神,如果有人能提供帮助,我将非常感激。
答案 0 :(得分:0)
即使您使用getData()
获得一行或一列矢量,也会获得Object[][]
。
当你这样做时:
if (data[y]==""){
newData.push(skunum);
skunum++;
var skunum=[skunum];
}
您检查[cellFromColumn] == ""
是否评估为false,因为它是一个数组
然后将新/旧sku编号推送到一个简单的数组,对于电子表格,该数组是一行列
相反,你想要将一个元素数组包含在sku数中,如下所示:
newData.push(skunum);
...
newData.push([data[y]]);
这将创建一个行数组,每行是一个包含一个元素(一列)的数组