我对Google Sheets API还是很陌生,请多多包涵。
我有一个用作模板的电子表格,最后两行以某种特定的方式(颜色和字体)格式化。
看起来像这样:
.getStr
我想做的是根据需要插入尽可能多的“占位符”行,并让最后一行“滑”下来。
到目前为止,我尝试过values.update
,它确实插入了新行,但没有降低最后一行的颜色。这样一来,我就可以根据需要在电子表格中获得数据,但是使用了错误的颜色格式(基本上第三行始终具有彩色背景,而最后一行则没有)。
我想做的伪代码:
我不确定这是最好的方法(似乎有点复杂)。有人可以指出正确的方向吗?
答案 0 :(得分:1)
您可以将条件格式设置为始终与最终单元格的数据匹配,而不是对单元格应用格式设置。
例如,对于this link,您可以通过将以下条件格式应用于A2:Z999来始终将其应用于最后一行。
= Arrayformula(Row($ A2:$ A)= Max((Row($ A2:$ A))*((($ A2:$ A <>“)))))
或者有一些总是总是在最后一行中的数据,并根据其格式与该数据匹配。
但是,请注意,如果要创建全新的行,则条件格式可能会超过Z行,在这种情况下,您的条件格式将不再适用(无需手动更新它适用于的行,从而扩大了范围)。这可能会限制此方法的可用性,具体取决于您的用途。
答案 1 :(得分:0)
因此,最后我决定使用spreadsheet.get来检索模板。
我将标志includeGridData
设置为true,它将发回每个单元格的所有信息。
这是一个大对象,但它拥有我所需的一切。
然后克隆模板行,并根据需要生成尽可能多的副本。
最后,我将这些新行放回get
返回的rows对象中(不包含模板行),然后使用batchUpdate更新价差表。
类似的东西:
async updateSpreadsheetCells(clone, data, spreadSheetDataRows) {
const request = {
spreadsheetId: clone.id,
resource: {
requests: [
{
updateCells: {
fields: '*',
range: {
sheetId: 0,
startRowIndex: 0,
endRowIndex: endRow // value dynamically calculated
startColumnIndex: 0,
endColumnIndex: this.endColumnIndex
},
rows: spreadSheetDataRows //this will replace all the rows
}
}
]
}
};
await this.googleSheetService.batchUpdateSpreadSheet(request);
}
这是一个快速的概述,代码有点复杂,没有必要在此处发布。希望这会帮助其他人。