ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Python】Google Sheets API の batch_update を使ってみる

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