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