Как ссылаться на строку parm в листе = smartsheet.sheets.get(print(«%s», SHEET_ID)) вызов?

#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))

Удачи!