WorkivaはPythonの標準ライブラリとPython Package Index (PyPI)の両方をサポートしています。依存先は、組み込みのスクリプトエディタを使用して自動的に生成することも、ローカルマシンで手動作成することもできます。
Workiva Scripting は「Customize Workiva」に含まれています。スクリプティング機能を使用するには、ワークスペースで「Workivaのカスタマイズ/スクリプティング」が有効になっている必要があり、ユーザーには適切なスクリプティングロールとファイルへのアクセス権限が必要です。
対応ライブラリ
Workivaスクリプトは、Pythonの標準ライブラリ をすぐにサポートします。コード内でモジュールをインポートするだけで、すぐに使い始めることができます。このライブラリには、ファイルI/Oのようなシステム関数に使用するための組み込みモジュールや、一般的なプログラミングの問題に対する多くの標準化されたソリューションが含まれています。
標準ライブラリに加え、Python Package Index から入手可能なコンポーネントのコレクションが増えています。使用したいPyPIコンポーネントを含む依存先をスクリプトに生成する必要があります。
私たちがよく使う PyPI コンポーネントのひとつに"requests"コンポーネントがあり、Workiva Public API を通して Workiva プラットフォームとやり取りすることができます。
メモ: 追加インストールが必要な PyPI コンポーネントはサポートされないかもしれません。
スクリプトエディタで依存先を生成
スクリプト編集者は依存先を自動的にビルドすることができます。
その方法はこうだ:
- ホーム から、 スクリプトファイルを開く(または新規作成)。
- 左側のSources パネルに移動し、現在のソースのすぐ下にある空白を右クリックし、+ Add Source File を選択する。
-
requirements.txt という名称の新規ソースを作成する。
- 中央のキャンバスに、インストールするライブラリとバージョンを指定する線を追加する。(これは、以下の例の画像にある「requests==2.28.1 」という行です。)
- 左上の保存 をクリックします。
- 画面を再読み込みする。このステップを飛ばしてはいけない!
保存して更新すると、Workivaは自動的にdependencies.zipという従属バンドルを生成します。これで、あなたのコードでライブラリを使用することができます。
ローカルマシンからの依存先の生成
依存先をマニュアルで作成するには、ローカルでパッケージをビルドし、それをスクリプト編集者にアップロードする必要がある。例えば、スクリプトを実行するために"requests"ライブラリを使用する必要があるプロジェクトがあるとしましょう:
インポート リクエスト print (requests.get('https://api.github.com').text)これは、pip互換のパッケージ・マネージャーを使用して実現できます:
-
の
リクエスト用ライブラリ「 」のバージョンを、pip互換の形式で指定します。この設定は、.txtファイルとして保存してください:echo requests==2.28.1 > requirements.txt -
依存関係を、新しい `/dependencies/ ` ディレクトリにインストールします:
pip3 install --target ./dependencies --requirement requirements.txt -
に「
dependencies.zip」 というファイルを作成します:cd dependencies zip -r ../dependencies.zip . cd .. -
アクセストークンの取得をリクエストする:
作業を開始する前に、API グラントに「
script:write」スコープが含まれていることを確認してください。API グラントの作成または更新方法については、「Workiva API の設定」 を参照してください。curl -X POST https://api.app.wdesk.com/oauth2/token \ -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \ -H "Accept: application/json" \ -H "X-Version: 2026-01-01" \ -d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials"レスポンスから `
access_token ` を取得し、以下の `$BEARER_TOKEN ` として使用してください。 -
Workiva Scripting プロジェクト内で、
dependencies.zip 用の新しいソースを作成します:curl -X POST "https://api.app.wdesk.com/scripts/${SCRIPT_ID}/sources" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2026-01-01" \ -d '{"path":"dependencies.zip"}'この応答により、新しいソースが返されます。そのの
ID「」を、コンテンツアップロードリクエスト用の「SOURCE_ID」として保存してください。{ "id": "<sourceId>", "path": "dependencies.zip" } -
dependencies.zipのソースに対するコンテンツのアップロードを開始します。レスポンスヘッダーを表示するには、-iを指定してください:curl -i -X POST \ "https://api.app.wdesk.com/scripts/${SCRIPT_ID}/sources/${SOURCE_ID}/contentUpload" \ -H "Accept: application/json" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2026-01-01"レスポンス本文から `
uploadUrl` を、また `Location` のレスポンスヘッダーから操作 URL を保存します。 -
dependencies.zipを、返されたuploadUrlにアップロードしてください:curl -X PUT "<uploadurl>" \ -H "Authorization: Bearer $BEARER_TOKEN" \ --data-binary @dependencies.zip次に、操作用URLをポーリングします:
curl -X GET "<operationlocation>" \ -H "Authorization: Bearer $BEARER_TOKEN" \ -H "X-Version: 2026-01-01"の「
Retry-After」レスポンスヘッダーを尊重し、のステータスが操作が正常に完了しない限り、スクリプトを実行しないでください。完了 、、ポーリングリクエストを繰り返します。失敗、またはキャンセル となるまで -
の
リクエストをテストするためのライブラリを動作させるには、以下のコードを含むスクリプトを実行してください:import requests print(requests.get('https://api.github.com').text)
よくある質問
どのAPIとライブラリがサポートされていますか?
Workivaスクリプトは現在m以下の機能をサポートしています:
- WorkivaパブリックAPI
- Workiva以外のAPI
- Pythonの標準ライブラリ
- Python Package Index (PyPI)
Workiva Scriptingでは、現時点ではPythonのみをサポートしています。
詳細については、Workivaのサポートページ()および、サポートされているWorkivaスクリプティングライブラリと依存関係( )をご覧ください。
Workivaスクリプトで使用されているPythonのバージョンは?
新しいスクリプトは Python 3.13 で実行されます。Workiva Scripting では、既存の Python 3.9 スクリプトを引き続きサポートしていますが、Python 3.9 のサポートは 2027 年 10 月に終了します。そのため、Python 3.9 スクリプトはできるだけ早く Python 3.13 へ移行してください。
詳細については、Workivaのサポートページ()および「WorkivaでのスクリプトのPython 3.13への移行」( )をご覧ください。
Workivaは、PythonやJavaのような一般的な言語でAPIクライアントを提供していますか?
現在、PythonやJava用のパブリックSDKはプロバイダーとして提供していません。
しかし、Workiva APIについてはオープンなAPI仕様を提供していますので、ご自身でライブラリを生成することも可能です。例えば、Workiva Platform API の OAS ファイルを取得し、クライアント・ライブラリを生成することができます 。
スクリプト専用のAPIはありますか?
もちろんです。パブリックスクリプティングAPIは、Workiva APIバージョン2026-01-01以降で利用可能です。すべてのリクエストに「X-Version: 2026-01-01」を付与してください。
サポートされている操作、スコープ、および要件については、『スクリプトAPIガイド』( )をご覧ください。
Workiva Public APIのAPI付与を作成、ビューするにはどうすればよいですか?
クライアントIDとシークレットを取得するには、こちらの説明に従ってください。
Pythonを使用してWorkiva Public APIに認証する方法を教えてください。
次の例では、アクセス トークンを取得し、そのワークスペース内で API グラントを通じてアクセス可能なスクリプトを取得します。このAPIグラントには、スクリプトの「read」スコープが必要です。API グラントの作成または更新方法については、「Workiva API の設定」 を参照してください。
import os import requests AUTH_URL = "https://api.app.wdesk.com/oauth2/token" SCRIPTING_API_URL = "https://api.app.wdesk.com/scripts" API_VERSION = "2026-01-01" CLIENT_ID = os.environ["CLIENT_ID"] CLIENT_SECRET = os.environ["CLIENT_SECRET"] token_response = requests.post( AUTH_URL, headers={ "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "X-Version": API_VERSION, }, data={ "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "client_credentials", }, timeout=30, ) token_response.raise_for_status() headers = { "Authorization": f"Bearer {token_response.json()['access_token']}", "X-Version": API_VERSION, } scripts_response = requests.get( SCRIPTING_API_URL, headers=headers, timeout=30, ) scripts_response.raise_for_status() print(scripts_response.json())Pythonを使ってセルの書式を更新するには?
スクリプトからセルの書式設定を更新するには、Workiva Platform API の「」エンドポイント(「」および「POST /spreadsheets/{spreadsheetId}/sheets/{sheetId}/update 」)を呼び出します。
-
applyFormatsフィールドを使用して、太字、数値や通貨の書式設定、塗りつぶしなどの書式を適用し、applyBordersを使用して枠線を適用します。 - 範囲ごとに1件ずつリクエストを送信するのではなく、複数のフォーマット操作を1つのリクエストにまとめて送信することをお勧めします。各フィールドは操作の配列を受け付け、エンドポイントにはレート制限が設けられているためです。
詳細については、以下の Workiva 開発者向けページを参照してください:
Workivaに保存されているWorkiva以外のファイルの読み書きやアップロードはできますか?
はい。Workivaのファイル管理APIを使用すると、PDF、画像、その他の任意のファイル形式など、Workiva以外のファイルを、サポート文書 としてプラットフォームにアップロードできます。これにより、元のファイルがそのままの状態で保持されます。ファイルをアップロードするには、インポートファイルのエンドポイントを使用し、、kindをに設定し、、「サポート文書」は、他のWorkivaファイルと一緒に表示され、他のファイルと同様に、一覧表示、移動、コピー、エクスポート(ダウンロード)、およびゴミ箱への移動が可能です。SupportingDocumentを 、 に設定してください。
プログラムで自動化を作成・管理できますか?
現時点では、プログラムで自動化を作成または管理するためのエンドポイントはありません。