(Python)GoogleSheetAPI:只追加不重复的行

(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

我制作了一个脚本,用于将值从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=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;
}
但我不知道如何正确使用它。
谢谢你的建议。

我相信你的目标和你目前的状况如下

  • 您希望将
    json.load(df.to_json(orient='values'))
    的值附加到Google电子表格中的特定工作表中
  • 您希望附加
    json.loads(df.to_json(orient='values'))
    的值的列“A”和“B”不包括在工作表中的值
  • 您希望使用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()