首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >此操作将使工作簿中的单元格数超过10000000个单元格的限制- Google-Apps-Script。

此操作将使工作簿中的单元格数超过10000000个单元格的限制- Google-Apps-Script。
EN

Stack Overflow用户
提问于 2022-08-10 06:25:23
回答 1查看 115关注 0票数 -1
  • 我正在尝试将base-64 CSV导入Google脚本。
  • 我面临以下错误
代码语言:javascript
运行
复制
Error   
Exception: This action would increase the number of cells in the workbook above the limit of 10000000 cells.
myFunction  @ Code.gs:16
代码语言:javascript
运行
复制
function myFunction() {

  var csv_string = [base-64-string];
  
  var decoded = Utilities.base64Decode(csv_string); // decoded string
  
  var string = Utilities.newBlob(decoded).getDataAsString(); // csv string

  var array = Utilities.parseCsv(string) // 2d array

  console.log(array.length);
  console.log(array[0].length);

  Logger.log(array.every(function(row){return row.length === 1}));

  SpreadsheetApp.getActiveSheet().getRange(1,1,array.length,array[0].length).setValues(array);
}
  • console.log(array.length); 1日志
  • console.log(array[0].length); 12537日志
  • Logger.log(array.every(function(row){return row.length === 1})); false日志

CSV链路

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-10 09:06:41

当我看到从您的base64中解码的数据时,数据似乎是JSON数据,而不是CSV数据。我认为你当前问题的原因就是因为这一点。

从您提供的数据中,为了解析数据,下面的示例脚本如何?

示例脚本:

代码语言:javascript
运行
复制
function myFunction() {
  var base64 = "###"; // Your provided base64 data.
  
  var decoded = Utilities.base64Decode(base64);
  var obj = JSON.parse(Utilities.newBlob(decoded).getDataAsString());
  var obj2 = JSON.parse(obj.Rows);
  var actualHeader = ["Transaction Date","Particulars","Amount","Cr/Dr","Balance","Transaction Type","Party Name","Charge Name","Charge Class"];
  var objHeader = ["Transaction_Date","Particulars","Amount","Cr_Dr","Balance","Transaction_Type","Normalized_Party_Name_Label","Normalized_Charge_Name_Label","Charge_Class"];
  var array = [actualHeader, ...obj2.map(o => objHeader.map(h => o[h] || ""))];
  
  // Here, the value is put to the active sheet.
  SpreadsheetApp.getActiveSheet().getRange(1,1,array.length,array[0].length).setValues(array);
}
  • actualHeader是从您的评论的数据。objHeader来自JSON数据。
  • 如果使用所提供的https://drive.google.com/file/d/1I9Liq1ePrqZXQlejMwpOu3q3VZo_7hCI/view?usp=sharing的JSON数据,则可以按以下方式修改var base64。 变量数据= DriveApp.getFileById("1I9Liq1ePrqZXQlejMwpOu3q3VZo_7hCI").getBlob().getDataAsString();var base64 = JSON.parse(data).Output.Augmented_Transactions.Base64EncodedFile;
  • 运行此脚本时,base64数据将被解码并解析为JSON数据。然后创建一个数组。然后,将数组放到活动表中。
  • 如果要将array转换为CSV数据,那么使用var csv = array.map(r => r.join(",")).join("\n")如何?

参考资料:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73301569

复制
相关文章

相似问题

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