diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index a9ec92118..c320df78d 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -410,10 +410,12 @@ class GSheetsEngineSpec(ShillelaghEngineSpec): spreadsheet_url = payload["spreadsheetUrl"] # insert data + data = df.fillna("").values.tolist() + data.insert(0, df.columns.values.tolist()) body = { "range": range_, "majorDimension": "ROWS", - "values": df.fillna("").values.tolist(), + "values": data, } url = ( "https://sheets.googleapis.com/v4/spreadsheets/" diff --git a/tests/unit_tests/db_engine_specs/test_gsheets.py b/tests/unit_tests/db_engine_specs/test_gsheets.py index 7d7348c1a..c425a1bfe 100644 --- a/tests/unit_tests/db_engine_specs/test_gsheets.py +++ b/tests/unit_tests/db_engine_specs/test_gsheets.py @@ -333,7 +333,7 @@ def test_upload_new(mocker: MockFixture) -> None: database = mocker.MagicMock() database.get_extra.return_value = {} - df = pd.DataFrame([1, "foo", 3.0]) + df = pd.DataFrame({"col": [1, "foo", 3.0]}) table = Table("sample_data") GSheetsEngineSpec.df_to_sql(database, table, df, {}) @@ -367,7 +367,7 @@ def test_upload_existing(mocker: MockFixture) -> None: "engine_params": {"catalog": {"sample_data": "https://docs.example.org"}} } - df = pd.DataFrame([1, "foo", 3.0]) + df = pd.DataFrame({"col": [1, "foo", 3.0]}) table = Table("sample_data") with pytest.raises(SupersetException) as excinfo: @@ -392,7 +392,7 @@ def test_upload_existing(mocker: MockFixture) -> None: json={ "range": "sheet0", "majorDimension": "ROWS", - "values": [[1], ["foo"], [3.0]], + "values": [["col"], [1], ["foo"], [3.0]], }, params={"valueInputOption": "USER_ENTERED"}, ),