遍历工作表并追加列

Loop through sheets and append columns

我在智能sheet 工作区中有超过 100 个 sheet。我想使用 python api 遍历每个 sheet 并将行 ID、sheet ID 和主列附加到数组或 pandas 数据框。

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)

我不确定 pandas,但我可以帮助您将信息放入 python 数组中。

使用Smartsheet Python SDK you'll want to first install the SDK,然后import smartsheet

接下来,像这样

用你的access token初始化一个Smartsheet对象
ss_client = smartsheet.Smartsheet(SMARTSHEET_ACCESS_TOKEN)

抓住你的工作区

workplace = ss_client.Workspaces.get_workspace(workplace_id)

从工作区中获取 sheets

wp_sheets = workplace.sheets

初始化您正在创建的数组

info_array = []

循环工作区对象中的 sheets。这些 sheet 对象只有几个字段来标识 sheet,因此您需要使用 sheet.id 从 Smartsheet 中获取完整的 sheet ] API.

# loop through sheets 
for sheet in wp_sheets:
    # get sheet
    full_sheet = ss_client.Sheets.get_sheet(sheet.id)

获取 sheet

的主列
# 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

获取行 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})  

这是Gist