在 Google Sheet 中更新单元格字体时保持边框
Keeping border when updating cell's font in Google Sheet
发送更改单元格字体的请求后,单元格边框出现问题。
这是我的代码:
$sheetId = "mySheetId"
$spreadSheetId = "mySpreadSheetId"
$requests = [
new \Google_Service_Sheets_Request([
'repeatCell' => [
'cell' => [
'userEnteredFormat' => [
"horizontalAlignment" => "CENTER",
'textFormat' => [
"foregroundColor" => [
"red" => 1
],
"bold"=>true
]
]
],
'range' => [
'sheetId' => $sheetId,
'startRowIndex' => 11,
'endRowIndex' => 13,
'startColumnIndex' => 9,
'endColumnIndex' => 10
],
'fields' => 'userEnteredFormat'
]
])
];
$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
'requests' => $requests
]);
$response = $serviceGoogleSheet->spreadsheets->batchUpdate($spreadSheetId,
$batchUpdateRequest);
这是更改前的样子
修改后,文字变成了我想要的,但边框中的一些线条消失了
有没有办法让它保持旧状态,或者我必须在我的请求中添加一些更新边框才能将其改回?
当您指定 属性 userEnteredFormat
时,它会覆盖以前存在的单元格格式
因此,如果您希望保留边框格式,则必须在请求中指定它。
样本:
$sheetId = "mySheetId"
$spreadSheetId = "mySpreadSheetId"
$requests = [
new \Google_Service_Sheets_Request([
'repeatCell' => [
'cell' => [
'userEnteredFormat' => [
"horizontalAlignment" => "CENTER",
'textFormat' => [
"foregroundColor" => [
"red" => 1
],
"bold"=>true
],
"borders" => [
"bottom" => [
"style" => "SOLID"
],
"left" => [
"style" => "SOLID"
],
"right" => [
"style" => "SOLID"
],
"top" => [
"style" => "SOLID"
]
]
]
],
'range' => [
'sheetId' => $sheetId,
'startRowIndex' => 11,
'endRowIndex' => 13,
'startColumnIndex' => 9,
'endColumnIndex' => 10
],
'fields' => 'userEnteredFormat'
]
])
];
$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
'requests' => $requests
]);
$response = $serviceGoogleSheet->spreadsheets->batchUpdate($spreadSheetId,
$batchUpdateRequest);
根据你的情况,我认为当fields
的值被修改后,你的问题可能会被移除。那么如何修改您的脚本如下?
发件人:
'fields' => 'userEnteredFormat'
收件人:
'fields' => 'userEnteredFormat.horizontalAlignment,userEnteredFormat.textFormat'
和
'fields' => 'userEnteredFormat(horizontalAlignment,textFormat)'
参考:
发送更改单元格字体的请求后,单元格边框出现问题。
这是我的代码:
$sheetId = "mySheetId"
$spreadSheetId = "mySpreadSheetId"
$requests = [
new \Google_Service_Sheets_Request([
'repeatCell' => [
'cell' => [
'userEnteredFormat' => [
"horizontalAlignment" => "CENTER",
'textFormat' => [
"foregroundColor" => [
"red" => 1
],
"bold"=>true
]
]
],
'range' => [
'sheetId' => $sheetId,
'startRowIndex' => 11,
'endRowIndex' => 13,
'startColumnIndex' => 9,
'endColumnIndex' => 10
],
'fields' => 'userEnteredFormat'
]
])
];
$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
'requests' => $requests
]);
$response = $serviceGoogleSheet->spreadsheets->batchUpdate($spreadSheetId,
$batchUpdateRequest);
这是更改前的样子
修改后,文字变成了我想要的,但边框中的一些线条消失了
有没有办法让它保持旧状态,或者我必须在我的请求中添加一些更新边框才能将其改回?
当您指定 属性 userEnteredFormat
时,它会覆盖以前存在的单元格格式
因此,如果您希望保留边框格式,则必须在请求中指定它。
样本:
$sheetId = "mySheetId"
$spreadSheetId = "mySpreadSheetId"
$requests = [
new \Google_Service_Sheets_Request([
'repeatCell' => [
'cell' => [
'userEnteredFormat' => [
"horizontalAlignment" => "CENTER",
'textFormat' => [
"foregroundColor" => [
"red" => 1
],
"bold"=>true
],
"borders" => [
"bottom" => [
"style" => "SOLID"
],
"left" => [
"style" => "SOLID"
],
"right" => [
"style" => "SOLID"
],
"top" => [
"style" => "SOLID"
]
]
]
],
'range' => [
'sheetId' => $sheetId,
'startRowIndex' => 11,
'endRowIndex' => 13,
'startColumnIndex' => 9,
'endColumnIndex' => 10
],
'fields' => 'userEnteredFormat'
]
])
];
$batchUpdateRequest = new \Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
'requests' => $requests
]);
$response = $serviceGoogleSheet->spreadsheets->batchUpdate($spreadSheetId,
$batchUpdateRequest);
根据你的情况,我认为当fields
的值被修改后,你的问题可能会被移除。那么如何修改您的脚本如下?
发件人:
'fields' => 'userEnteredFormat'
收件人:
'fields' => 'userEnteredFormat.horizontalAlignment,userEnteredFormat.textFormat'
和
'fields' => 'userEnteredFormat(horizontalAlignment,textFormat)'