(Python)GoogleSheetAPI:只追加不重复的行
我制作了一个脚本,用于将值从dataframe附加到googlesheet,如下所示:(Python)GoogleSheetAPI:只追加不重复的行,python,google-sheets,duplicates,append,google-sheets-api,Python,Google Sheets,Duplicates,Append,Google Sheets Api,我制作了一个脚本,用于将值从dataframe附加到googlesheet,如下所示: SERVICE_ACCOUNT_FILE = 'keys.json' SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] creds = None creds = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes
SERVICE_ACCOUNT_FILE = 'keys.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
creds = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId="myspreadsheetid",
range="mysheetid").execute()
values = result.get('values', [])
sheet.values().append(
spreadsheetId="myspreadsheetid",
range="mysheetid",
valueInputOption="USER_ENTERED",
insertDataOption="OVERWRITE",
body={
"values": json.loads(df.to_json(orient='values'))
},
).execute()
一切正常,但现在我想升级脚本,只附加值,这些值不是电子表格中已有数据的重复项(A列和B列)。
我试图在脚本中添加以下条件:
if(row[0] == values[0] && row[1] == values[1]){
duplicate = true;
}
但我不知道如何正确使用它。
谢谢你的建议。我相信你的目标和你目前的状况如下
- 您希望将
的值附加到Google电子表格中的特定工作表中json.load(df.to_json(orient='values'))
- 您希望附加
的值的列“A”和“B”不包括在工作表中的值json.loads(df.to_json(orient='values'))
- 您希望使用googleapis for python实现这一点
- 您已经能够使用Sheets API获取和输入Google电子表格的值
sheet.values().get()
检索的值和输入的值?当这反映到脚本中时,它将变成如下所示。请按如下方式修改您的脚本
发件人:
致:
- 在这种情况下,使用列“A”和“B”的值创建用于搜索输入值的重复行的对象。使用此对象,将从输入值中删除重复的行
注:
- 当我看到您的脚本时,我找到了
range=“mysheetid”,
。在您的情况下,mysheetid
是工作表名称吗?如果这是实际的图纸ID,而图纸名称不是图纸ID,则会发生错误。所以请小心这个
参考:
values = result.get('values', [])
sheet.values().append(
spreadsheetId="myspreadsheetid",
range="mysheetid",
valueInputOption="USER_ENTERED",
insertDataOption="OVERWRITE",
body={
"values": json.loads(df.to_json(orient='values'))
},
).execute()
values = result.get('values', [])
obj = {e: True for e in [str(k[0]) + str(k[1]) for k in values]} # Added
v = [r for r in json.loads(df.to_json(orient='values')) if str(r[0]) + str(r[1]) not in obj] # Added
sheet.values().append(
spreadsheetId="myspreadsheetid",
range="mysheetid",
valueInputOption="USER_ENTERED",
insertDataOption="OVERWRITE",
body={"values": v}, # Modified
).execute()