0

我在 smartsheet 工作区中有 100 多张工作表。我想使用 python api 循环遍历每个工作表并将行 ID、工作表 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)
4

1 回答 1

3

我不确定 pandas,但我可以帮助您将信息放入 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

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

这是要点

于 2018-11-16T02:05:43.910 回答