Прокручивать листы и добавлять столбцы - PullRequest
0 голосов
/ 15 ноября 2018

У меня более 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 Ответ

0 голосов
/ 16 ноября 2018

Я не уверен насчет панд, но я могу помочь вам получить информацию в массиве 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, чтобы получить полный лист из API Smartsheet.

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

Вот Суть .

...