通过 api (python) 将数据发布到 smartsheets 列时出错

Error's when posting data to smartsheets columns via api (python)

所以我目前正在尝试 post 通过 smarthsheet 的数据 api。我的数据存储在元组列表中,例如:

[('hello','hi','description here'), ('I', 'Appreciate','the','help' )] <- 这显然是为了参考,但只是想澄清元组中的所有数据都是字符串。现在,当我转到 post 我必须智能 sheet 的数据时,我收到以下错误,

{"response": {"statusCode": 404, "reason": "Not Found", "content": {"errorCode": 1006, "message": "Not Found", "refId": "ra7osyecdyx8"}}}
{"result": {"code": 1006, "errorCode": 1006, "message": "Not Found", "name": "ApiError", "recommendation": "Do not retry without fixing the problem. ", "refId": "ra7osyecdyx8", "shouldRetry": false, "statusCode": 404}}

我用来获取 smartsheet 中 sheet 的 sheetid 然后添加到该列的代码是

def getColumns(sheetId, columnList):
    try:
        columnList = []
        action = smart.Sheets.get_columns(
            sheetId, include_all=True)
        columns = action.data
        for col in columns:
            columnList.append(col.id)
        return columnList
    except Exception as e:
        time.sleep(30)
        print(traceback.format_exc())
        print(e)

def addToColumns(columnId, sheetId, columnData):
    try:
        column_spec = smartsheet.models.Column({
            'title': columnData,
            'type': 'TEXT_NUMBER',
            'options': ["One"],
            'index': 0
            })
        
        response = smart.Sheets.update_column(
            columnId,
            sheetId,
            column_spec

        )
        print(response)
    except ValueError as e:
        # time.sleep(30)
        # print(traceback.format_exc())
        print(e)
    getColumns()

    return

这两个函数在此处的主要代码中被调用:

try:

        response = requests.request(
            'GET', url, headers=headers, data=payload, params=params)
        data = response.json()
        cloudcheckrBillingData = []
        columnList = []
        sheetColumns = getColumns(cloudCheckrCurrentMonth, columnList)
        for x in data['BillByAccount']:
            # print(data['BillByAccount'])
            billData = x['Account'], x['MonthlyToDateBill'], x['MonthlyToDateCost'], x['MonthlyToDateCredits']
            cloudcheckrBillingData.append(billData)


        for r in sheetColumns:
            for i in cloudcheckrBillingData:
                for string in i:
                    addToColumns(r, cloudCheckrCurrentMonth, string)
                
        return 
    except Exception as e:
        print(e)

我试图达到的目标是获取存储在“cloudcheckrBillingData”列表中的上面可视化的数据,然后遍历列 ID 和元组以在 addToColumns() 中适当地添加数据功能。错误发生在 addToColumns() 函数中

我并不是 100% 遵循您所描述的场景 -- 但这里有一些可能有用的反馈。

首先,响应 Smartsheet API 调用的 404 错误通常意味着(至少)URI 中指定的 ID 之一不存在'不存在或发出 API 调用的用户(即拥有用于验证 API 调用的令牌的用户帐户)无权访问该项目。例如,如果我使用我的 API 令牌发出带有 URI PUT /sheets/123/columns/456Update Column 请求,如果满足以下任一条件,我将收到 404 响应:

  • 不存在具有 ID 123 的 sheet。
  • Sheet ID 123 存在,但它不包含 ID 456.
  • 的列
  • Sheet ID 123 存在,但我没有足够的权限访问它。

不过,让我们从 404 错误中退一步,因为我认为可能存在更大的问题。我是否正确理解您正在尝试向 sheet 添加新的 数据?如果是这样,那么您会想要使用 Add Rows 操作来执行此操作。您的函数 addToColumns 正在调用 Update Column 操作,该操作旨在执行更新列的属性(数据类型等)、移动列或重命名列等操作。根据您描述的情况,这似乎不是正确的操作。