Dar*_*eva 2 python-3.x gspread google-sheets-api
我在 GS 中有一个文档,其中自动上传了带有字符串格式数值的数据。\n在所有单元格中都有一个标记,因此我可以通过删除它来将字符串转换为数字。
\n\n\n\n当我使用 gspread 方法更新一个单元格时,它成功运行: wks.update_acell("B7", str(1939.0).replace("\'"," "))
但我想用 wks.update_cells 更改范围内的所有单元格。
\n\n在官方 gspread 文档中有一个例子:
\n\ncell_list = wks.range(\'A1:C7\')\n\nfor cell in cell_list:\n cell.value = \'O_o\'\n\n# Update in batch\nwks.update_cells(cell_list)\nRun Code Online (Sandbox Code Playgroud)\n\n在这种形式下它可以工作,但在我的情况下 cell.value = str.replace("\'","") 我收到错误:
TypeError: replace() takes at least 2 arguments (1 given)\nRun Code Online (Sandbox Code Playgroud)\n\n我想我需要将 smth 放在括号 str().replace \xe2\x80\x93 但不明白什么 \xe2\x80\xa6 谁能帮我吗?
\n\nPS\n完整代码:
\n\nimport pandas as pd\nimport numpy as np\nfrom pandas import Series,DataFrame\nfrom file4dir1 import rep\n\n\n pd.set_option(\'display.max_columns\',None)\n pd.set_option(\'display.expand_frame_repr\',False)\n pd.set_option(\'max_colwidth\',-1)\n\n mytoken=\'***\'\n project = \'***\'\n\n DateFrom="2019-12-01"\n DateTo="2019-12-31"\n\n data=rep(mytoken,project,DateFrom,DateTo)\n\n file=open("cashe3.csv","w")\n file.write(data)\n file.close()\n f=pd.read_csv("cashe3.csv", header=1, sep=\' \',index_col=0,parse_dates=True)\n\nimport googleapiclient.discovery\nimport argparse\nfrom apiclient import discovery\nfrom oauth2client import client\nfrom oauth2client import tools \n\n SCOPES = \'https://www.googleapis.com/auth/spreadsheets\'\n CLIENT_SECRET_FILE = "myGSapp4.json"\n APPLICATION_NAME = \'Google Sheets API Report\'\n credential_path = \'sheets.googleapis.com-report.json\'\n\nfrom httplib2 import Http\nfrom oauth2client.file import Storage \n\n store = Storage(credential_path)\n credentials = store.get()\n parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, parents=[tools.argparser])\n flags = parser.parse_args([])\n if not credentials or credentials.invalid:\n flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)\n flow.user_agent = APPLICATION_NAME\n if flags:\n credentials = tools.run_flow(flow, store, flags)\n print(\'Storing credentials to \' + credential_path)\n\nfrom apiclient.discovery import build\nfrom oauth2client.service_account import ServiceAccountCredentials\nfrom apiclient.discovery import build\nfrom httplib2 import Http\n\n\nimport gspread\nfrom df2gspread import df2gspread as d2g \n\n spreadsheet_key = \'***\'\n wks_name = \'Sheet0\'\n d2g.upload(f, spreadsheet_key, wks_name, credentials=credentials, row_names=True)\nRun Code Online (Sandbox Code Playgroud)\n\n#行索引和列索引仅作为示例
\n\n gc = gspread.authorize(credentials)\n wks_name = gc.open_by_key(\'***\').get_worksheet(0)\n cell_list = wks_name.range(\'E7:E13\')\n requests = {\n "requests": [\n {\n "findReplace": {\n "range": {\n "sheetId": \'Sheet0\',\n "startRowIndex": 7,\n "endRowIndex": 13,\n "startColumnIndex": 5,\n "endColumnIndex": 5\n },\n "find": "^\'",\n "searchByRegex": True,\n "includeFormulas": True,\n "replacement": ""\n }\n }\n ]\n }\n\n wks_name.update_cells(cell_list)\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
按这种方式尝试,它应该有效:
cell_list = wks.range('A1:C7')
for cell in cell_list:
cell.value = 'O_o'
# Update in batch
wks.update_cells(cell_list, value_input_option='USER_ENTERED')
Run Code Online (Sandbox Code Playgroud)
你缺少的是:value_input_option='USER_ENTERED'
如有任何问题,请查看 API 参考
| 归档时间: |
|
| 查看次数: |
13012 次 |
| 最近记录: |