Google Sheets API の batch_update を使ってみたので、その時のメモをここに残します。
updateCells
サンプルコード
body = {
"requests": [
{
"updateCells": {
"range": {
"sheetId": 0,
"startRowIndex": 0,
"endRowIndex": 1,
"startColumnIndex": 0,
"endColumnIndex": 4
},
"rows": [
{
"values": [
{ "userEnteredValue": { "stringValue": "文字列"} },
{ "userEnteredValue": { "numberValue": 12345} },
{ "userEnteredValue": { "boolValue": false} },
{ "userEnteredValue": { "formulaValue": "=B1"} },
],
},
],
"fields": "userEnteredValue"
}
}
]
}
worksheet.spreadsheet.batch_update(body)
補足
rowsプロパティ
書き込むデータの本体です。
RowData 型の配列で指定します。
RowData は1行のセルを表し、Celldata は1つのセルを表します。
rows が複数行を表し values が同一行内の複数セルを表します。
rows.values.CellData.userEnteredValueプロパティ
セルに値を書き込むにはCellData内のuserEnteredValueプロパティを使います。
fieldsプロパティ
fieldsは必須プロパティで、対象のプロパティが指定されていない場合は、リクエストに含まれていても無視されます。
書き込み範囲を絞りたくない場合は "*" が指定できます。
deleteDimension
サンプルコード
body = {
"requests": [
{
"deleteDimension": {
"range": {
"sheetId": worksheet.id,
"dimension": "ROWS",
"startIndex": 1,
"endIndex": worksheet.row_count,
}
}
}
]
}
worksheet.spreadsheet.batch_update(body)
pasteData
サンプルコード
with open(csv_file_path, "r") as csv_file: csvContents = csv_file.read() body = { "requests": [ { "pasteData": { "coordinate": { "sheetId": worksheet.id, "rowIndex": "0", "columnIndex": "0", }, "data": csvContents, "type": "PASTE_NORMAL", "delimiter": ",", } } ] } worksheet.spreadsheet.batch_update(body)
補足
row と colmun の取得方法
max_rows = len(worksheet.get_all_values()) max_cols = len(worksheet.get_all_values()[0])
row_count = worksheet.row_count col_count = worksheet.col_count