Community: Smartsheet API と自動化ルール

ドーセット氏はPythonでsmartsheet APIを使用してシートをコピーした際の行のコピー、移動のオートメーション・ルールの破損ということについて質問し、これに対し、Sheet Summaryにコピー、移動先にシート名を保存し、それを活用して手動でのワークフロー編集することや、APIによらぬワークフローを含むシートのコピーを提案すると回答した。

ユーザーの質問の要約


ユーザーの質問の要約

ドーセット氏は、Pythonでsmartsheet APIを使って特定のシートをコピーし、新しい保存先に保存しています。このプロセスは正常に動作しますが、オートメーション・ルールがコピーされた新しいシートで破損してしまいます。「ワークフローが無効です」というエラーメッセージが表示される。

私の答えの要約

Python SDKを使ってテストした結果、コピーされたシートのワークフローが正しくコピーされないことを確認しました。解決策として、ワークフローを手動で編集する必要があること、およびSheet Summaryにワークフローのコピー先シート名のフィールドを作成する方法を提案しています。

質問と回答の詳細

質問

ドーセット ✭ ✭ ドーセット
05/06/23
こんにちは、

Pythonでsmartsheet APIを使用するのに苦労しています。

smartsheet_client.Sheets.copy_sheet(…)を使って、特定のシートをIDでコピーし、新しい保存先フォルダにコピーしようとしています。これは問題なく動作し、新しい場所と新しい名前でシートを作成することができます。

問題は、このシートにはいくつかのオートメーション・ルールがあり、シートを「アーカイブ」し、いくつかの行を別のシートに保存し、記録を残すようになっていることだ。

Pythonでシートをコピーするたびに、自動化ルールが壊れ、新しいシートで’ワークフローが無効です’と表示されます。

回答
jmyzk_cloudsmart_jp ✭✭✭✭
05/08/23
こんにちは。

おっしゃる通りです。

Python SDK を使ってテストしたところ、コピーされたシートのワークフローはコピーまたは移動アクションのターゲットシート名をコピーせず<不明なシート>と表示されました。

コピー先シート名を変更するには、ワークフローを手動で編集する必要があります。

編集を簡単にするために、Sheet Summaryにワークフローのコピー先シート名のフィールドを作るなどの方法があります。

APIシートコピーでコピー先シート名がコピーされない.png

😀

ドーセット
05/09/23
返信ありがとうございます!

はい、私の問題を発見してくれました。https://community.smartsheet.com/discussion/68744/automation-based-on-sheet-summary、オートメーション内でシートサマリデータを使用する方法はないと書かれています。<unknown sheet>をクリックすると、ロジックは使用できず、シートを選択することしかできません。

オートメーション・ルールを解除させ、update_automation_rule(…)とおそらく’action’フィールドを使用してボックスの内容を変更し、目的シートIDを再度与えることが1つの解決策になると思いました。正確な構文はわかりません。

次の問題は、これは新しくコピーされ作成されたシートなので、自動化ルールのIDをハードコードすることができません。IDを取得しようとしてlist_automation_rules(…)を使用すると、ルールの1つ(一番最後のもの)しか得られません。また、新しい切れ目のないルールを作成し、それらをアクティブ、非アクティブにしてみましたが、違いはありませんでした。

actualautomationrules.png

listautomationrulesoutput.png

jmyzk_cloudsmart_jp ✭✭✭✭
05/09/23
こんにちは。

残念ながら、Smartsheet API では、承認、通知、更新要求以外のワークフロー自動化ルールの作成または更新をサポートしていません。

https://smartsheet.redoc.ly/tag/automationRulesDescription

オートメーションとは、承認、通知、更新リクエストの総称である。APIを通じて、さまざまな自動化設定を削除、更新、取得できます。プログラムで新しい自動化ルールを作成することはできません。

すべてのワークフロー ルールに API サポートがないことは、非常に残念なことです。参考までに、Smarthseet APIは’フォーム’をサポートしていません

私が提案した Sheet Summary フィールドの使用は、API 使用のためではなく、ワークフロー ルールの手動編集のためです。

シートを手動でコピーする場合、コピーされたシートには、コピーや行の移動アクションを含む有効なワークフローがあります。手動でシートをコピーすることと、手動でワークフローを編集することのトレードオフを考慮してください。

ドーセット
05/09/23
@jmyzk_cloudsmart_jp 、

私のプロジェクトにとって最高のニュースではないのは確かだが、それにもかかわらず、このトピックに関するあなたの知識にとても感謝している。

まとめ

Smartsheet APIを使用してシートをコピーすると、行のコピー、移動のオートメーション・ルールに問題が生じる可能性がある。この問題の解決策として、Sheet Summaryにコピー、移動先にシート名を保存し、それを活用して手動でのワークフロー編集することや、APIによらぬワークフローを含むシートのコピーを提案すると回答した。これはAPIの制限に起因する問題であり、APIの使用を検討している他のユーザーは、この制限を理解し、対応策を検討する必要がある。

コメントを残す