The write_google_sheet method writes data to a specified range of cells in a Google Sheet. This method requires that the user has the appropriate Google Sheets permissions configured in their Narada extension.
This method requires Google Sheets access to be configured in the Narada extension. If this is your first time using Google Sheets methods, the Narada extension will prompt you to authorize access. The user must have write permissions for the specified spreadsheet.

Method Signature

async def write_google_sheet(
    self,
    *,
    spreadsheet_id: str,
    range: str,
    values: list[list[str]],
    timeout: int | None = None,
) -> None

Parameters

spreadsheet_id
str
required
The ID of the Google Sheet. This is the long string in the Google Sheets URL.
# From URL: https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
spreadsheet_id="1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
range
str
required
The range of cells to write to in A1 notation. Can include sheet name.
range="A1:C3"            # Range on default sheet
range="Sheet1!A1:C3"     # Range on specific sheet
range="Data!B2:E5"       # Named sheet with range
values
list[list[str]]
required
A 2D array containing the data to write. Each inner list represents a row of data.
values=[
    ["Name", "Age", "City"],
    ["Alice", "25", "New York"],
    ["Bob", "30", "San Francisco"]
]
timeout
int | None
default:"None"
Maximum time in seconds to wait for the operation to complete.
timeout=30     # Wait up to 30 seconds
timeout=None   # Use default timeout

Return Value

This method returns None and completes when the data has been written to the sheet.

Example

import asyncio
from narada import Narada

async def main():
    async with Narada() as narada:
        window = await narada.open_and_initialize_browser_window()

        # Write data to a Google Sheet
        await window.write_google_sheet(
            spreadsheet_id="1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
            range="Sheet1!A1:C3",
            values=[
                ["Product", "Price", "Stock"],
                ["Laptop", "999", "15"],
                ["Mouse", "25", "50"]
            ]
        )

        print("Data written successfully!")

if __name__ == "__main__":
    asyncio.run(main())