3

私は Smartsheet Python SDK の初心者です。Smartsheets API ドキュメントのサンプル コードを出発点として使用します。

action = smartsheet.Sheets.list_sheets(include_all=True)
sheets = action.data

このコードは問題なく応答を返します。

私は今、シートを反復処理するいくつかの簡単な例を探しています:

for sheet in sheets:

次に、名前でシートを選択します

次に、選択したシートの行を繰り返し、行を選択します。

for row in rows:

次に、選択したシートの選択した行からセル値を取得します。

開始するには、いくつかの簡単なサンプルが必要です。私は広範囲に検索しましたが、これを行う方法の簡単な例を見つけることができません ありがとう!

4

3 に答える 3

4

スコットが言ったように、シートは大量のデータを返す可能性があるため、フィルターは慎重に使用してください。以下は、各行に 1 つの列だけを 2 行ずつプルするように記述したコードの例です。

action = smartsheet.Sheets.get_sheet(SHEET_ID, column_ids=COL_ID, row_numbers="2,4")

利用可能なフィルターの詳細については、こちらを参照してください。

更新: サイトのエチケットに従い、完全な回答を提供するために、さらにコードが追加されました。

API の学習中に最初にしたことは、すべてのシートとそれに対応する sheetId のリストを表示することです。

action = MySS.Sheets.list_sheets(include_all=True)
for single_sheet in action.data:
    print single_sheet.id, single_sheet.name

そのリストから、データを取得するシートの sheetId を決定しました。私の例では、実際にプライマリ列をプルする必要があったため、このコードを使用してプライマリ列の ID を特定しました (また、非プライマリ列の ID をリストに保存しました。これは、その時点でそれらが必要になる可能性があると考えたためです)。 :

PrimaryCol = 0
NonPrimaryCol = []
MyColumns = MySS.Sheets.get_columns(SHEET_ID)
for MyCol in MyColumns.data:
    if MyCol.primary:
        print "Found primary column", MyCol.id
        PrimaryCol = MyCol.id
    else:
        NonPrimaryCol.append(MyCol.id)

最後に、シート全体を取得すると大量のデータが返される可能性があることを念頭に置いて、フィルターを使用してプライマリ列のデータのみを返します。

MySheet = MySS.Sheets.get_sheet(SHEET_ID, column_ids=PrimaryCol)
for MyRow in MySheet.rows:
    for MyCell in MyRow.cells:
        print MyRow.id, MyCell.value
于 2016-03-24T00:51:08.150 に答える
2

私は SmartSheets で Python API を使い始めました。RIO2016 オリンピック オペレーションの一部をサポートするために Smartsheet を使用しているため、ライセンス コンプライアンスの制限のために、時々最も古い Smartsheet を削除する必要がありました。そして、それは大失敗でした: ログインし、300 百の中からそれぞれのスマートを選択し、すべてのフィールドをチェックします。そのため、smartsheet API 2.0 のおかげで、これまでに使用されたシートの数を簡単に知ることができ、すべての「変更された」日付を取得し、その列で最新の日付から最新の日付に並べ替えて、CSV ディスクに書き込むことができました。これがそのための最良のアプローチであるかどうかはわかりませんが、期待どおりに機能しました.Idle-python2.7、Debian 8.5を使用しています。はい、どうぞ:

    # -*- coding: utf-8 -*-
    #!/usr/bin/python

    '''
    create instance of Sheet Object.
    Then populate List of Sheet Object with name and modified
    A token is necessary to access Smartsheets
    We create and return a list of all objects with fields aforesaid.
    '''

    # The Library

    import smartsheet, csv

    '''
    Token long var. This token can be obtained in 
    Account->Settings->Apps...->API
    from a valid SmartSheet Account.
    '''
    xMytoken=xxxxxxxxxxxxxxxxxxxxxx 

    # Smartsheet Token
    xSheet = smartsheet.Smartsheet(xMyToken)

    # Class object
    xResult = xSheet.Sheets.list_sheets(include_all=True)

    # The list 
    xList = []

    '''
    for each sheet element, we choose two, namely name and date of modification. As most of our vocabulary has special characters, we use utf-8 after the name of each spreadsheet.So for each sheet read from Object sheets
    '''
    for sheet1 in xResult.data.    
        xList.append((sheet1._name.encode('utf-8'),sheet1._modified_at))

    # sort the list created by 'Modifiedat' attribute
    xNlist = sorted(xList,key=lambda x: x[1])

    # print list
    for key, value in xNlist:
        print key,value

    # Finally write to disk    

    with open("listofsmartsh.csv", "wb") as f:
        writer = csv.writer(f)
        writer.writerows(xNList)

お楽しみください。

よろしく

于 2016-10-27T14:04:51.133 に答える