有没有一种干净的方法可以将稀疏网格写入 google 工作表范围
Is there a clean way to write a sparse grid to a google sheets range
我正在使用 Google sheets 来存储从网络应用程序更新的数据。
我在 sheet 的 getDataRange()
上使用 getValues()
检索所有数据,如下所示:
// 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()
将新扩展的网格写回sheet
// get the range to be updated and set values from the grid
var newDataRange = shtData.getRange(1, 1, rows + 1, cols);
newDataRange.setValues( dataGrid );
这意味着网格的某些部分没有价值。当网格写入 sheet 时,未定义值对应的单元格将用文本 "NOT_FOUND" 填充,而不是空白:
在回写 sheet 时,有什么方法可以让这些未定义的值成为空单元格吗?我试图避免使用零长度字符串填充所有未定义的网格位置的循环。
因为 @I'-'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 );
你可以去看看this post
参考文献
我正在使用 Google sheets 来存储从网络应用程序更新的数据。
我在 sheet 的 getDataRange()
上使用 getValues()
检索所有数据,如下所示:
// 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 );
这意味着网格的某些部分没有价值。当网格写入 sheet 时,未定义值对应的单元格将用文本 "NOT_FOUND" 填充,而不是空白:
在回写 sheet 时,有什么方法可以让这些未定义的值成为空单元格吗?我试图避免使用零长度字符串填充所有未定义的网格位置的循环。
因为 @I'-'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 );
你可以去看看this post
参考文献