0

我有两张床单。首先是来自 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);

      }

          }

      }
4

1 回答 1

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 不同......抱歉可能造成的混淆)

于 2013-07-09T19:49:11.927 回答