#python #python-3.x #dataframe #smartsheet-api
#python #python-3.x #фрейм данных #smartsheet-api
Вопрос:
Мне нужно передать переменную в мой Smartsheet API, чтобы я мог запускать ее для записи в разные Smartsheets. Прямо сейчас, когда жестко кодируется строка (с кавычками) «Мой Smartsheet», скрипт работает отлично, и мой Smartsheet обновляется.
sheet = smartsheet.sheets.get("My Smartsheet")
Однако, когда я использую переменную с именем, smartfi
я получаю сообщение об ошибке.
Запуск скрипта:
pi@cenicapi:~/Documents/tscripts/usage $ ./usage_add.py /home/pi/Documents/usgwrk/CCC-1494.xlsx "My Smartsheet"
*Traceback (most recent call last):
File "./usage_add.py", line 45, in <module>
sheet = smartsheet.sheets.get(smartfi)
File "/home/pi/.local/lib/python3.7/site-packages/simple_smartsheet/crud/base.py", line 148, in get
id_ = self.get_id(name)
File "/home/pi/.local/lib/python3.7/site-packages/simple_smartsheet/crud/base.py", line 125, in get_id
return self._get_id(name, objects)
File "/home/pi/.local/lib/python3.7/site-packages/simple_smartsheet/crud/base.py", line 91, in _get_id
f"{self.factory.__qualname__} object with the name {name!r} "
simple_smartsheet.exceptions.SmartsheetObjectNotFound: Sheet object with the name 'CCC-2052' has not been found
pi@cenicapi:~/Documents/tscripts/usage $*
Как мне передать переменную в sheet = smartsheet.sheets.get("My Smartsheet")
, чтобы она работала без ошибок, и мой Smartsheet с именем "My Smartsheet"
обновлялся в Интернете?
Скопируйте / вставьте скрипт ниже для справки:
import logging
import csv
import os
import sys
import pandas as pd
from datetime import date
excelfi=sys.argv[1]
smartfi=sys.argv[2]
logging.basicConfig(filename='rwsheet.log', level=logging.INFO)
from simple_smartsheet import Smartsheet
from simple_smartsheet.models import Sheet, Column, Row, Cell, ColumnType
data = pd.read_excel(excelfi,header = 0 )
df = pd.DataFrame(data)
cricket_elements = df.values.tolist()
TOKEN = os.getenv("SMARTSHEET_ACCESS_TOKEN")
SHEET_ID = smartfi
smartsheet = Smartsheet(TOKEN)
sheet = smartsheet.sheets.get(smartfi)
print("Smartsheet: ", sheet)
new_rows = []
for element in cricket_elements:
row = Row(to_bottom=True,
cells=[
sheet.make_cell("ccc_key_id", element[11]),
sheet.make_cell("CCD", element[3]),
sheet.make_cell("Max_In_Only", element[7]),
sheet.make_cell("Max_Out_Only", element[10]),
sheet.make_cell("avg_in_out_max", element[4]),
sheet.make_cell("MyDate", element[1])
])
new_rows.append(row)
smartsheet.sheets.add_rows(sheet.id, new_rows)
Ответ №1:
Необходимо передать parm в кавычках (SMH).
Ответ №2:
С положительной стороны, если кто-то ищет рабочий код для создания новой строки в Smartsheet, этот код сработал для меня.
Вот некоторые предварительные условия перед запуском в Linux (Raspberry Pi в моем случае):
Необходимо установить следующее после Python. простая установка pip-smartsheet установка pip pandas установка pip xlrd Регистрация всех вызовов
Parm1 = Файл Excel Parm2 = Имя Smartsheet (существующий на портале Smartsheet))
Удачи!