我有两张纸。 首先是来自JSON的数据,最多结果为100行。它包含8列。
其次是我手动添加的数据,然后根据匹配的标题写入第一张表。 例如,如果两个标题匹配,则在第二张表格的第一张表格中创建新列“类别”。第二张纸包含50行和8列。
当我运行此脚本时,它会抛出错误:很抱歉,我们无法处理该操作,因为它包含太多数据。我试图逐行删除以找出导致它的原因。似乎当我删除这一行时:
data[i][11] = descr; // this is a paragraph long description text
工作正常。另外,如果我删除了我想要写入的所有其他数据,并且只运行data [i] [11] = descr;它也窒息。所以,它似乎没有太多的数据。任何想法如何使其工作?解决方法?
编辑:这是电子表格的副本: https://docs.google.com/spreadsheet/ccc?key=0AhVWrVLsk5a5dFRaeFQxZUc3WlZOR0h4N09pOGJBdGc&usp=sharing
谢谢!
function listClasses(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; //list of all upcoming classes
var sheet1 = ss.getSheets()[1]; //list of titles
var data = sheet.getDataRange().getValues(); // read all data in the sheet
var data1 = sheet1.getDataRange().getValues();
for(n=1;n<data1.length;n++){
var title1 = data1[n][0];
var category = data1[n][1];
var image_url = data1[n][2];
var available = data1[n][3];
var descr = data1[n][4];
var prerequisites = data1[n][5];
var mAccess = data1[n][6];
var notes = data1[n][7];
// compare Check if title appears in column B of sheet 1.
if (ArrayLib.find(data1, 0, title1) != -1) {
// Yes it does, do something in sheet 0
for( var i = data.length -1; i >= 0; --i )
if (data[i][1] == title1)
{
//Logger.log(descr);
if (data[i].length < 14){
data[i].push(' ');
}
data[i][8] = category;
data[i][9] = image_url;
data[i][10] = available;
data[i][11] = descr;
data[i][12] = prerequisites;
data[i][13] = mAccess;
data[i][14] = notes;
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
}
}
答案 0 :(得分:0)
我查看了您的代码,但我无法使其正常工作。
我也得到这样的错误消息,但到目前为止,当我处理几千行(只有4列)但每行包含尽可能多的文本或超过你的描述时,它们遇到过它们。
我只知道如何使用一种简单的方式,我也为你的情况尝试过。我认为以下代码可以满足您的需求:
function listClasses2(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; //list of all upcoming classes
var sheet1 = ss.getSheets()[1]; //list of titles
var data = sheet.getDataRange().getValues(); // read all data in the sheet
var data1 = sheet1.getDataRange().getValues();
var newDataArray = [data[0]];
for(var n=1; n < data.length ; n++){
for(var j=0; j< data1.length ; j++){
if(data[n][1] == data1[j][0]){
newDataArray.push([data[n][0] ,data[n][1] ,data[n][2] ,data[n][3] ,data[n][4] ,data[n][5] ,data[n][6] ,data[n][7] ,data1[j][1] , data1[j][2] , data1[j][3] , data1[j][4] , data1[j][5] , data1[j][6], data1[j][7] ]) ;
break;}
}
newDataArray.push(data[n])
}
sheet.getRange(1, 1, newDataArray.length, newDataArray[0].length).setValues(newDataArray);
}
(我刚注意到我的var n与你的var n不同...对不起可能的混淆)