无法处理该操作,因为它包含的数据太多。 Google Apps脚本 [英] Unable to process the operation because it contains too much data. Google Apps Script

查看:109
本文介绍了无法处理该操作,因为它包含的数据太多。 Google Apps脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两张床单。
首先是来自JSON的数据,最大结果为100行。它包含8栏。

其次是我手动添加的数据,然后根据匹配的标题写入第一张表格。
例如,如果两个标题匹配,则在第二张表的第一张表中创建一个新的列类别。第二张表包含50行和8列。

当我运行这个脚本时,它会抛出错误:我们很抱歉,我们无法处理该操作,因为它也包含很多数据。我试图逐行删除,找出是什么原因造成的。这似乎是当我删除这一行:

  data [i] [11] = descr; //这是段落长描述文本

它工作正常。另外,如果我删除了所有我想写入的其他数据,并且只运行数据[i] [11] = descr;它也呛。所以,它似乎没有太多的数据。任何想法如何使其工作?解决方法?



编辑:这是电子表格的副本:
https://docs.google.com/spreadsheet/ccc?key=0AhVWrVLsk5a5dFRaeFQxZUc3WlZOR0h4N09pOGJBdGc&usp=sharing


$ b $ ()

 函数listClasses(){

var ss = SpreadsheetApp.getActiveSpreadsheet( );
var sheet = ss.getSheets()[0]; //所有即将到来的类的列表
var sheet1 = ss.getSheets()[1]; //标题列表

var data = sheet.getDataRange()。getValues(); //读取图纸中的所有数据
var data1 = sheet1.getDataRange()。getValues();

for(n = 1; 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];

//比较检查标题是否出现在图表1的B列中。
if(ArrayLib.find(data1,0,title1)!= -1){
// (var i = data.length -1; i> = 0; --i)
if(data [i] [1] == title1 )
{

//Logger.log (descr); (data [i] .length< 14){

data [i] .push('');

}

data [i] [8] =分类;
data [i] [9] = image_url;
data [i] [10] = available;
data [i] [11] = descr;
data [i] [12] =先决条件;
data [i] [13] = mAccess;
data [i] [14] =笔记;


sheet.getRange(1,1,data.length,data [0] .length).setValues(data);

}

}

}


解决方案

我查看了你的代码,但是我无法完成它。

这样的错误消息,但到目前为止,当我正在处理几千行(仅有4列)时遇到了这些错误消息,但每行包含的文本或超过描述的文本。



<我只知道如何使用一种简单的方法,我也为你的案例尝试过。下面的代码我认为你需要:

  function listClasses2(){
var ss = SpreadsheetApp.getActiveSpreadsheet( );
var sheet = ss.getSheets()[0]; //所有即将到来的类的列表
var sheet1 = ss.getSheets()[1]; //标题列表

var data = sheet.getDataRange()。getValues(); //读取图纸中的所有数据
var data1 = sheet1.getDataRange()。getValues();

var newDataArray = [data [0]]; (var n = 1; n for(var j = 0; j if(
$ b $ if (data [n] [1] == data1 [j] [0]){
newDataArray.push([data [n] [0],data [n] [1],data [n] [2数据[n] [4],数据[n] [5],数据[n] [6],数据[n] [7],数据1 [j] [1], data1 [j] [2],data1 [j] [3],data1 [j] [4],data1 [j] [5],data1 [j] [6]
break;}
}
newDataArray.push(data [n])
}
sheet.getRange(1,1,newDataArray.length,newDataArray [0] 。长度).setValues(newDataArray);

(我刚刚注意到我的var n与你的var不一样ñ...对于可能的混淆抱歉)


I have two sheets. First is data from JSON with max results 100 rows. It contains 8 columns.

Second is the data I add manually and then write to the first sheet based on matched title. For example, if both titles match then create a new column "Category" in first sheet from second sheet. The second sheet contains 50 rows and 8 columns.

When I run this script it throws error: We're sorry, we were unable to process the operation because it contains too much data. I tried to remove line by line to figure out what is causing it. And it seems like when I remove this line:

data[i][11] = descr; // this is a paragraph long description text

It is working fine. Also, if I remove all the other data I want to write in, and run only data[i][11] = descr; it also chokes. So, it doesn' seem like there is too much data. Any ideas how to make it work? Workarounds?

Edit: here is a copy of the spreadsheet: https://docs.google.com/spreadsheet/ccc?key=0AhVWrVLsk5a5dFRaeFQxZUc3WlZOR0h4N09pOGJBdGc&usp=sharing

Thanks!

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);

      }

          }

      }

解决方案

I had a look at your code, but I could not make it work.

I too get such error messages, but so far have encountered them when I am processing a few thousand rows (with only 4 columns) but each row containing as much text or more than your description.

I only know how to use a simple way, which I tried for your case too. The following code I think does what you need:

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);
}

(I have just noticed that my var n is not the same as your var n ... sorry for the possible confusion)

这篇关于无法处理该操作,因为它包含的数据太多。 Google Apps脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆