php - Google Sheets API 在行位置插入行
问题描述
我正在使用 Google API 向 Google Sheet 添加行。这一切都很好,但是新行被添加到最后(使用 append 方法)。
我想在标题下方的顶部插入行,在我的情况下是第 2 行。
这是我添加到最后的工作代码。如何指定要在给定位置插入行的位置。
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $CredentialFile);
$client = new \Google_Client;
$client->useApplicationDefaultCredentials();
$client->setApplicationName("MyApp");
$client->setScopes(['https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds']);
if ($client->isAccessTokenExpired()) {
$client->refreshTokenWithAssertion();
}
$accessToken = $client->fetchAccessTokenWithAssertion()["access_token"];
ServiceRequestFactory::setInstance(new DefaultServiceRequest($accessToken));
$SheetId = "MySheetId";
$service = new \Google_Service_Sheets($client);
$sheet = $service->spreadsheets->get($SheetId);
$sheets = $sheet->getSheets();
$SheetTitle = $sheets[0]->properties->title;
$range = "{$SheetTitle}!A:D";
$values = [];
$row = [];
$row[] = "Tom";
$row[] = "Thumb";
$row[] = "tomthumb";
$row[] = "tom@thumb.com"
$values[] = $row;
$body = new \Google_Service_Sheets_ValueRange([
'values' => $values
]);
$params = [
'valueInputOption' => "RAW"
];
$result = $service->spreadsheets_values->append($SheetId, $range, $body, $params);
解决方案
您正在使用values.append,它根据定义将值附加到第一个空行
如果要将值插入不是工作表第一个空行的范围内,则需要使用方法values.batchUpdate
样本:
$range="Sheet1!A2:D2";
$values = array(
array(
"Tom", "Thumb", "tomthumb", "tom@thumb.com"
)
);
$data = array();
$data[] = new Google_Service_Sheets_ValueRange(array(
'range' => $range,
'values' => $values
)
);
$body = new Google_Service_Sheets_BatchUpdateValuesRequest(array(
'valueInputOption' => 'RAW',
'data' => $data
)
);
$result = $service->spreadsheets_values->batchUpdate($SheetId, $body);
更新
- 我想插入包含数据的行,而不是将数据粘贴到已经存在的行中 - 您需要先创建附加行。
这可以通过InsertDimensionRequest来完成。
样本:
$request = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
'requests' => array(
'insertDimension' => array(
'range' => array(
"startIndex": 1,
"endIndex": 2,
"dimension": "ROWS",
"sheetId": 0
)
)
)
));
$request->setRequests($body);
$result = $service->spreadsheets->batchUpdate($SheetId, $request);
推荐阅读
- python - 如何将此部分(列表)转换为字典?
- css - 使 Angular 组件样式表与子组件一起工作
- r - 读取带有 rvest 的 HTML 表有时会卡住并产生超时错误
- javascript - Angular - Reactive Forms:“错误:找不到带有路径的控件:”和其他问题
- google-cloud-platform - 客户端在任何响应 GCLB 之前断开连接
- android - Andriod Studio:E/AndroidRuntime: 致命异常: main
- delphi - 在 Direct2D 中加载 PNG 图像而不损失质量
- javascript - Sequelize 跨模式交易
- c# - 隐藏任务栏时通知图标的上下文菜单问题
- flutter - 单击 DropdownButtonFormField 时抛出错误