Прокручивать листы и добавлять столбцы
У меня более 100 листов в рабочей области smartsheet. Я хотел бы использовать python api для циклического прохождения каждого листа и добавления идентификатора строки, идентификатора листа и основного столбца в массив данных или панд.
import requests
import pandas as pd
import io
import warnings
warnings.filterwarnings(action='once')
import smartsheet
import os.path
from time import gmtime, strftime
import pandas as pd
import numpy as np
import json
import requests
import hashlib
fullList = pd.DataFrame()
for sheet in sheetArray:
r = requests.get(baseURL + "/" + str(sheet), headers=headers)
rows = json.loads(r.text)
rows = rows['rows']
rowsDF = pd.DataFrame.from_dict(rows)
dropCols = ["cells","createdAt", "expanded", "modifiedAt","siblingId"]
rowsDF = rowsDF.drop(dropCols, axis=1)
fullList.append(rowsDF)
1 ответ
Я не уверен насчет панд, но я могу помочь вам получить информацию в массиве python.
Используя Smartsheet Python SDK, вам нужно сначала установить SDK, а затем import smartsheet
,
Затем инициализируйте объект Smartsheet с помощью вашего токена доступа, как показано ниже.
ss_client = smartsheet.Smartsheet(SMARTSHEET_ACCESS_TOKEN)
Хватай свое рабочее пространство
workplace = ss_client.Workspaces.get_workspace(workplace_id)
Возьмите листы из рабочего пространства
wp_sheets = workplace.sheets
Инициализируйте массив, который вы создаете
info_array = []
Зациклите листы объекта Workspace. Эти объекты листа имеют только несколько полей для идентификации листа, поэтому вам нужно использовать sheet.id
чтобы получить полный лист из Smartsheet API.
# loop through sheets
for sheet in wp_sheets:
# get sheet
full_sheet = ss_client.Sheets.get_sheet(sheet.id)
Возьмите основной столбец для листа
# get the primary column
primary_column_id = get_primary_column_id(full_sheet.columns)
get_primary_column_id()
Функция будет выглядеть следующим образом. Объекты столбца имеют логическое поле для primary
, Найти столбец с primary
установите в true.
def get_primary_column_id(columns):
for column in columns:
if (column.primary):
return column.id
Возьмите идентификаторы строк и добавьте всю информацию к info_array
,
# get row ids
for row in full_sheet.rows:
info_array.append({'sheet_id': sheet.id,
'row_id': row.id,
'primary_column_id': primary_column_id})
Вот суть.