首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >例外情况:此操作将使工作簿中的单元格数超过10000000单元格的限制。

例外情况:此操作将使工作簿中的单元格数超过10000000单元格的限制。
EN

Stack Overflow用户
提问于 2022-02-03 17:31:50
回答 2查看 704关注 0票数 0

我有下面的代码,但运行后会得到以下错误。有什么办法解决这个问题吗?我正在检索的数据大约有那么多单元格,但它可能正在检索空白行,但所有行都有公式。

每个文件的行数的N#:

  • uno: 72850
  • 监督事务司: 72850
  • tres: 72850
  • cuatro: 72850
  • 辛科: 72850

总数: 364250

代码语言:javascript
运行
复制
function test() {
  var dest = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()

  var ss = SpreadsheetApp.openById('id2')
  var sh = ss.getSheetByName('uno')
  var values = sh.getRange('A1:AF'+sh.getLastRow()).getValues()
  dest.getRange(dest.getLastRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.openById('id2')
  var sh = ss.getSheetByName('dos')
  var values = sh.getRange('A1:AF'+sh.getLastRow()).getValues()
  dest.getRange(dest.getLastRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.openById('id3')
  var sh = ss.getSheetByName('tres')
  var values = sh.getRange('A1:AF'+sh.getLastRow()).getValues()
  dest.getRange(dest.getLastRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  

  var ss = SpreadsheetApp.openById('id4')
  var sh = ss.getSheetByName('cuatro')
  var values = sh.getRange('A1:AF'+sh.getLastRow()).getValues()
  dest.getRange(dest.getLastRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  

  var ss = SpreadsheetApp.openById('id5')
  var sh = ss.getSheetByName('cinco')
  var values = sh.getRange('A1:AF'+sh.getLastRow()).getValues()
  dest.getRange(dest.getLastRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  
};

EN

回答 2

Stack Overflow用户

发布于 2022-02-03 18:08:39

该错误消息似乎与Google中的当前电子表格限制有关,正如@Cooper所提到的,目前的限制如下:

​多达1,000万个单元格或18,278列(列ZZZ),用于在Google中创建或转换为Google的电子表格。

创建一个新的工作表可以完成这项工作,因为每个工作表的限制都适用。

票数 1
EN

Stack Overflow用户

发布于 2022-02-03 18:19:16

添加后,尝试将getLastRow()替换为getLastDataRow()

代码语言:javascript
运行
复制
Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastDataRow();
  if (col == null){col='A'}
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

所以..。

代码语言:javascript
运行
复制
function test() {
  var dest = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()

  var ss = SpreadsheetApp.openById('id2')
  var sh = ss.getSheetByName('uno')
  var values = sh.getRange('A1:AF'+sh.getLastDataRow()).getValues()
  dest.getRange(dest.getLastDataRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.openById('id2')
  var sh = ss.getSheetByName('dos')
  var values = sh.getRange('A1:AF'+sh.getLastDataRow()).getValues()
  dest.getRange(dest.getLastDataRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();

  var ss = SpreadsheetApp.openById('id3')
  var sh = ss.getSheetByName('tres')
  var values = sh.getRange('A1:AF'+sh.getLastDataRow()).getValues()
  dest.getRange(dest.getLastDataRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  

  var ss = SpreadsheetApp.openById('id4')
  var sh = ss.getSheetByName('cuatro')
  var values = sh.getRange('A1:AF'+sh.getLastDataRow()).getValues()
  dest.getRange(dest.getLastDataRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  

  var ss = SpreadsheetApp.openById('id5')
  var sh = ss.getSheetByName('cinco')
  var values = sh.getRange('A1:AF'+sh.getLastDataRow()).getValues()
  dest.getRange(dest.getLastDataRow()+1,1,values.length,values[0].length).setValues(values)
  SpreadsheetApp.flush();  
};
Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastDataRow();
  if (col == null){col='A'}
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70975724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档