Как мне написать ответ Smartsheet в файл? - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь написать базовый код, чтобы получить список рабочих пространств и записать ответ в файл. Я думал, что это может быть сброшено в файл JSON?

Спасибо за любую помощь / предложения.

Я взял образец файла .py и переработал его, чтобы он выглядел так -

# Install the smartsheet sdk with the command: pip install smartsheet-python-sdk
import smartsheet
import logging
import os.path
import json

# TODO: Set your API access token here, or leave as None and set as environment variable "SMARTSHEET_ACCESS_TOKEN"
access_token = None

print("Starting ...")

# Initialize client
smart = smartsheet.Smartsheet(access_token)
# Make sure we don't miss any error
smart.errors_as_exceptions(True)

# Log all calls
logging.basicConfig(filename='rwsheet.log', level=logging.INFO)

response = smart.Workspaces.list_workspaces(include_all=True)
workspaces = response.data


with open('data.json', 'w') as outfile:
    json.dump(workspaces, outfile)


print("Done")

1 Ответ

0 голосов
/ 24 мая 2019

Я не уверен, с какой проблемой вы столкнулись, но я думаю, что у вас возникнет проблема со строкой json.dump(workspaces, outfile), так как в результате этой переменной workspaces будет list, которую вам нужно будет повторить, чтобы пройти через данные. Использование этой переменной просто выведет указатель примерно так: [<smartsheet.models.workspace.Workspace object at 0x10382a4e0>]
Чтобы обойти это, вам нужно будет зациклить результаты переменной и распечатать их каждый в файл. Я нашел этот пост здесь о выводе на печать в файл. Ответ дает три подхода, и я смог заставить каждый из них работать с циклом, повторяющим результаты.
Один пример:

import smartsheet

smar_client = smartsheet.Smartsheet(<ACCESS_TOKEN>)

response = smar_client.Workspaces.list_workspaces(include_all=True)
workspaces = response.data

with open('workspaces.json', 'w') as f:
  for workspace in workspaces:
    print(workspace, file=f)

Запуск этого файла дал мне файл workspaces.json в том же каталоге, из которого я запускал свой скрипт со списком объектов workspace.

...