美好的一天,我目前的問題是根據列名應用日期和小數格式。
`
//Date Format
new \Google\Service\Sheets\Request([
"repeatCell" => [
"range" => [
"sheetId" => $sheet_id,
"startColumnIndex" => 1,
"endColumnIndex" => 3,
],
"cell" => [
"userEnteredFormat" => [
"numberFormat" => [
"type" => "DATE",
"pattern" => "dd-mm-yyyy"
]
]
],
"fields" => "userEnteredFormat.numberFormat",
],
]),
//Decimal Format
new \Google\Service\Sheets\Request([
"repeatCell" => [
"range" => [
"sheetId" => $sheet_id,
"startColumnIndex" => 2,
"endColumnIndex" => (sizeof($this->dataCols->all())),
],
"cell" => [
"userEnteredFormat" => [
"numberFormat" => [
"type" => "NUMBER",
"pattern" => "#,##0.00"
]
]
],
"fields" => "userEnteredFormat.numberFormat",
],
]),
`
我已經根據列范圍弄清楚了。我真正的問題是我需要修改哪一部分才能應用基于列名的單元格格式?謝謝你。
樣本:

這是日期列。

這是金額列。
我有很多默認資料型別的列名。目前,我根據范圍設定格式,例如 setIndexColumns =>0, endIndexColumns =>3, 。如何按列名設定資料型別格式?例如,如果列名為 Doc。日期、整列或資料將顯示為日期格式。如果列名稱為 Amount(MYR),則整個列或資料將顯示為十進制格式。
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想要通過搜索列標題來為列設定數字格式。數字格式的請求正文顯示在您的腳本中。
- 在您的電子表格中,標題行是第 3 行。并且,您想要設定從第 3 行到最后一行的數字格式。
- 您希望使用 googleapis for PHP 來實作此目的。
- 您已經能夠使用 Sheets API 獲取值并將值放入 Google Spreadsheet。
在這種情況下,我認為需要完成以下流程。
- 檢索標題行(在您的情況下,它是第 3 行)。
- 通過使用標題標題搜索列來創建請求正文。
- 使用創建的請求正文請求 Sheets API。
當這個流程反映在示例腳本中時,它變成如下。
示例腳本:
$service = ###; // Please use your client.
$spreadsheet_id = "###"; // please set Spreadsheet ID.
$sheet_name = "Sheet1"; // Please set the sheet name.
$sheet_id = "###"; // Please set the sheet ID of the sheet name.
// Object for searching the header title. This is from your showing script.
$obj = [
"Doc. Date" => ["numberFormat" => ["type" => "DATE", "pattern" => "dd-mm-yyyy"]],
"Amount (MYR)" => ["numberFormat" => ["type" => "NUMBER", "pattern" => "#,##0.00"]]
];
// Retrieve the header title.
$res1 = $service->spreadsheets_values->get($spreadsheet_id, "'" . $sheet_name . "'!A3:3");
$header = $res1["values"][0];
// Create a request body for batchUpdate.
$requests = [];
foreach ($header as $i => $h) {
if (array_key_exists($h, $obj)) {
array_push($requests,
new \Google\Service\Sheets\Request([
"repeatCell" => [
"range" => [
"sheetId" => $sheet_id,
"startColumnIndex" => $i,
"endColumnIndex" => $i 1,
"startRowIndex" => 3,
],
"cell" => ["userEnteredFormat" => $obj[$h]],
"fields" => "userEnteredFormat.numberFormat",
],
]),
);
};
}
// Request Sheets API using the created request body.
if (count($requests) > 0) {
$batchUpdateCellFormatRequest = new \Google\Service\Sheets\BatchUpdateSpreadsheetRequest(["requests" => $requests]);
$service->spreadsheets->batchUpdate($spreadsheet_id, $batchUpdateCellFormatRequest);
};
- 運行此腳本時,會從第 3 行檢索標頭標題,并使用標頭標題和物件創建請求正文。并且,使用請求正文請求 Sheets API。
筆記:
- 如果您的實際標題標題與 不同
$obj,請修改為您的實際標題標題。
參考:
- 方法:電子表格.values.get
- 方法:電子表格.batchUpdate
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/535724.html
