我做了一个PHP脚本,使用api v4将一些信息导出到谷歌电子表格。当我尝试向单元格中添加注释时,我应该为每个注释向API发出请求,这对我来说是一个问题,前面已经解释过了。
我目前的方法是以下一种,我试图在单行的每一列上添加注释($HeaderNotes是一个数组):
public function writeHeaderNotes($headerNotes, $spreadsheetId, $sheetId, $row)
{
$client = $this->getClient();
$service = new Google_Service_Sheets($client);
$cellstart = 0;
$cellend = 1;
foreach ($headerNotes as $note)
{
$body = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
'requests' => array(
'updateCells' => array(
'rows' => array(
'values' => array(
'note' => $note)),
'fields' => 'note',
'range' => array(
'sheetId' => $sheetId,
'startRowIndex' => $row-1,
'endRowIndex' => $row,
'startColumnIndex' => $cellstart,
'endColumnIndex' => $cellend)))
));
$service->spreadsheets->batchUpdate($spreadsheetId, $body);
$cellstart++;
$cellend++;
}
}
在这种方法中,注释是一个接一个地添加的(使用循环),并且工作正常。主要的问题是,我做的请求和notes一样多,而谷歌的Cuota有限。(每100秒每个用户有100个写入请求)。我需要优化请求的数量,我只需要发出一个请求,在同一行的不同单元格中添加不同的注释。阅读google电子表格文档,我可以看到请求中的“note”节点正在请求字符串值:
"note": string,
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#updatecellsrequesthttps://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/sheets#RowDatahttps://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellData
如何在不同的单行单元格中添加不同的注释,而不需要发出这么多请求?
如RowData对象[1]的文档所述,values
字段是一个数组,其中每个值(CellData对象)都是要插入到每个单元格中的值。您还需要使用一个范围,该范围可以覆盖要在每行中插入的所有值。我修改并测试了您的代码,在第一行的前5列中插入注释,并成功地工作:
$client = getClient();
$service = new Google_Service_Sheets($client);
$cellstart = 0;
$cellend = 5;
$note = "whatever";
$row = 1;
$body = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
'requests' => array(
'updateCells' => array(
'rows' => array(
'values' => array(
array('note' => $note),
array('note' => $note),
array('note' => $note),
array('note' => $note),
array('note' => $note)
)
),
'fields' => 'note',
'range' => array(
'sheetId' => $sheetId,
'startRowIndex' => $row-1,
'endRowIndex' => $row,
'startColumnIndex' => $cellstart,
'endColumnIndex' => $cellend
)
)
)
));
$service->spreadsheets->batchUpdate($spreadsheetId, $body)
[1]https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/sheets#RowData
问题内容: Gdata提供了一种基于时间戳仅从Google电子表格中获取更改的单元格的方法。如何为Gdata调用创建时间戳? 即“将仅返回发布时间等于或晚于指定时间戳记的条目。” setPublishedMax()https://developers.google.com/gdata/javadoc/com/google/gdata/client/Query#setPublishedMax (co
我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?
我有一个谷歌电子表格,里面有多张表格,我想把每一张表格复制到一个新的电子表格中,并在一个特定的单元格中以文本命名新的电子表格。我很高兴运行脚本多次,所以我想让它复制活动表。 即。我所拥有的=称为“颜色”的电子表格——工作表1=“红色”,工作表2=“蓝色”,工作表3=“黄色”,等等。 我想要什么= 名为“红色”的电子表格。电子表格叫做"蓝色",电子表格叫做"黄色" 到目前为止,我有这个脚本,但它告诉
我们使用Google Sheet API v4。我们希望用空数据清除整个工作表。我们不想删除行/列。 UpdateCells调用不起作用(通过API删除列):开发人员。谷歌。com 工作UpdateCells调用(所有单元格):开发人员。谷歌。com
我很抱歉,如果这是一个明显的问题,我仍然是相当新的API。我正在使用python drive api库,并试图将google电子表格下载为CSV。 当我使用files.get时,它会吐出一个没有downloadUrl的文件,在导出链接字段中也没有“text/csv”键。 如果不可能,我可以找到解决方案,但我希望是这样,因为可以手动完成(file->download_as->csv) 我需要使用go
我很难找到将多张工作表同步到主电子表格的方法。在我的测试中,我有一个大的电子表格,上面有5个城市的地址。我正在尝试为每个城市创建一个电子表格,并能够在任何一个表格中更改数据时同步数据。因此,我将管理总体数据,5张电子表格中的每一张都将分配给其他人。这样,他们就可以在不访问所有数据的情况下更新工作表。使用内置查询或导入功能的问题是,如果用户在“城市”电子表格上进行更改,它将破坏该表格,因为数据被引用