google-apps-script - 有没有一种干净的方法可以将稀疏网格写入谷歌表格范围
问题描述
我正在使用 Google 表格来存储从网络应用程序更新的数据。
getValues()
我使用工作表上的on检索所有数据getDataRange()
,如下所示:
// get reference to the data sheet
var ss = _getPOMasterSpreadsheet();
var shtData = ss.getSheetByName( "TestSheet11" );
// obtain the grid
var dataRange = shtData.getDataRange();
var dataGrid = dataRange.getValues();
var cols = dataGrid[0].length;
var rows = dataGrid.length;
有时我通过添加新行来扩展数据,但并非行中的每一列都包含数据,例如:
// create a new row and add it to the grid
var newRow = new Array( cols );
dataGrid.push( newRow );
// write a value to the last cell of the new row
newRow[ newRow.length-1 ] = "NEW LAST CELL" ;
然后使用新扩展的网格将其写回工作表setValues()
// get the range to be updated and set values from the grid
var newDataRange = shtData.getRange(1, 1, rows + 1, cols);
newDataRange.setValues( dataGrid );
这意味着网格的某些部分没有价值。当网格写入工作表时,对应于未定义值的单元格将填充文本“NOT_FOUND”而不是空白:
在写回工作表时,有什么方法可以让这些未定义的值成为空单元格?我试图避免有一个循环来用零长度字符串填充所有未定义的网格位置。
解决方案
正如 @I'-'我告诉我fill
在应用脚本中不可用。
您仍然可以在客户端使用它,所以您应该在这里写:
newRow.fill(""); // or 0
forEach
就是这种情况如果您在服务器端编码,除了使用函数之外,我没有看到任何其他解决方案:
var newRow = new Array( cols );
newRow.forEach(function(element, index)
{
newRow[index] = ""; // or 0
});
newRow[ newRow.length - 1] = "NEW LAST CELL" ;
dataGrid.push( newRow );
你可以去看看这个帖子
参考
推荐阅读
- dataweave - Dataweave:根据条件合并 2 个数组
- python - 为什么 Range 函数将给定一个参数视为停止值而不是开始
- xml - 是否可以使用“xsl:include”来构建正确的 HTML 文档树,假设 HTML 子项位于“xsl:include”文件中
- c# - 使用 dll 后 C# File ReadAllLine 函数禁用(无限等待)
- python - 如果没有提供内容长度,如何在使用 python 下载时检测文件大小或视频大小?
- c# - 在 C# 中将字符串转换为有效编码的最佳方法
- azure - 如何在 Azure Functions 中重用 Cosmos DB 连接
- c - 如何将具有任意值的字符左移以生成 64 位整数?
- python - 迭代循环,追加数据连续
- maven - Maven原型+ Velocity:如何显示当前目录和删除一些目录