通过 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/456
的 Update Column 请求,如果满足以下任一条件,我将收到 404
响应:
- 不存在具有 ID
123
的 sheet。
- Sheet ID
123
存在,但它不包含 ID 456
. 的列
- Sheet ID
123
存在,但我没有足够的权限访问它。
不过,让我们从 404
错误中退一步,因为我认为可能存在更大的问题。我是否正确理解您正在尝试向 sheet 添加新的 行 数据?如果是这样,那么您会想要使用 Add Rows 操作来执行此操作。您的函数 addToColumns
正在调用 Update Column 操作,该操作旨在执行更新列的属性(数据类型等)、移动列或重命名列等操作。根据您描述的情况,这似乎不是正确的操作。
所以我目前正在尝试 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/456
的 Update Column 请求,如果满足以下任一条件,我将收到 404
响应:
- 不存在具有 ID
123
的 sheet。 - Sheet ID
123
存在,但它不包含 ID456
. 的列
- Sheet ID
123
存在,但我没有足够的权限访问它。
不过,让我们从 404
错误中退一步,因为我认为可能存在更大的问题。我是否正确理解您正在尝试向 sheet 添加新的 行 数据?如果是这样,那么您会想要使用 Add Rows 操作来执行此操作。您的函数 addToColumns
正在调用 Update Column 操作,该操作旨在执行更新列的属性(数据类型等)、移动列或重命名列等操作。根据您描述的情况,这似乎不是正确的操作。