我正在使用Google表格存储从网络应用更新的数据。
我通过使用工作表getValues()
上的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”填充,而不是空白:
写回工作表时,是否有某种方法可以使这些未定义的值成为空单元格?我试图避免使用零长度字符串填充所有未定义网格位置的循环。
答案 0 :(得分:1)
@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
参考