はじめに
この投稿では、Smartsheet の自動承認ワークフローで承認者の名前をSmartsheet APIを用いて記録する方法について説明します。
https://gist.github.com/jmyzk/18161ba9d0cc643a9cebceab3f739f8d
質問の要約
- 承認リクエストが自動的に承認された場合、承認者の名前を記録するにはどうすればよいですか?
- 承認者は Smartsheet またはシートにアクセスできません。
- 列は将来の監査のためにロックされます。
答えの要約
2 つの方法がディスカッションでは紹介されています。
- セル履歴 API を使用する
この方法では、Smartsheet API を使用してセルの履歴を取得し、承認者の名前を含む変更履歴を記録します。(Cloudsmartのjmyzkが公開したコードにより承認者名が記録できることが検証されています。) - 更新リクエストを使用する
この方法では、承認リクエストの代わりに更新リクエストを使用して、承認者の名前を手動で入力します。(検証されていませんが、利用可能かと思われます。なお、監査目的としては、手動の承認者名の入力は有効でない可能性があります。)
セル履歴 API を使用する方法
- Google Colab などの環境で Python コードを実行します。
- Smartsheet API を使用してセル履歴を取得します。
- セル履歴から承認者の名前を抽出します。
- 承認者の名前を別の列に保存します。
更新リクエストを使用する
- 承認ワークフローではなく、更新リクエストを作成します。
- 更新リクエストで、承認者の名前を入力するフィールドを追加します。
- 承認者は、更新リクエストを承認するときに、自分の名前を入力します。
自動承認ワークフローで承認者の名前をSmartsheet APIを用いて記録するコード例
まとめ
自動承認ワークフローで承認者の名前を記録するには、2 つの方法があります。 セル履歴 API を使用する方法の方が自動化できますが、技術的な知識が必要です。 更新リクエストを使用する方法は簡単ですが、手動で入力する必要があります。
ポイント
- セル履歴 API を使用するには、Smartsheet API の知識が必要です。
- 更新リクエストを使用するには、承認者が自分の名前を入力する必要があります。
- どちらの方法を使用する場合でも、列は将来の監査のためにロックする必要があります。
追加情報
- Smartsheet API ドキュメント: https://smartsheet.redoc.ly/
- セル履歴 API: https://smartsheet.redoc.ly/tag/cells#operation/cellHistory-get
やり取りの翻訳
サイード・ムハフザル ✭✭✭✭✭
2024/01/22 編集 02/19/24
こんにちは、
承認リクエストの自動化を使用するときに承認者の名前を記録するソリューションを探しています。これに関してはいくつかの質問や議論があるようですが、誰かが私に解決策を教えてくれませんか – Zapier を使わずに 🙂
たとえば、レポートの承認リクエストがジョン、ジャック、ジェリーに送信されるとします。ジェリーはそれを承認します。ジェリーの名前を列の 1 つに自動的に保存したいと考えています。
条件
- ジョン、ジャック、ジェリーは Smartsheet にもシートにもアクセスできません。
- 列はオートメーションとして更新されるため、オートメーションを使用できません。
- 列は将来の監査のためにロックされます。これは、ロック オートメーションを使用して行うことができます。
何かアイデアはありますか?
ベストアンサー
jmyzk_cloudsmart_jp ✭✭✭✭✭✭
こんにちは@サイード・ムハフザル
テストには Google Colab を使用します。
https://colab.research.google.com/?utm_source=scs-index
リンクをクリックし、Google アカウントでログインします。
私のコードを貼り付けて、次の操作を行ってください。
再生ボタンをクリックします。
再生ボタンをクリックします。
答え
jmyzk_cloudsmart_jp ✭✭✭✭✭✭
2024/01/22 2024 年 1 月 22 日編集
こんにちは@サイード・ムハフザル
Smartsheet API を使用してセル履歴を取得できます。 (https://smartsheet.redoc.ly/tag/cells#operation/cellHistory-get)
次のディスカッションでは、「お気に入りの Bridge ソリューション? – 承認ワークフローでの承認者名の取得」について言及しているため、Bridge は別のオプションです。 (Smartsheet 統合にはセル履歴の取得メソッドが表示されないため、いずれにしても Smartsheet API を使用する必要があるかもしれません。) (https://community.smartsheet.com/Discussion/104380/questions-about-bridge-from-a-potential-newbie)
以下のサンプル コードでは、承認ステータスを「承認済み」に変更する「変更者」電子メールを取得し、その電子メールで行を更新できます。
Approvers.ipynb を取得する
https://gist.github.com/jmyzk/18161ba9d0cc643a9cebceab3f739f8d
Smartsheet またはシートへのアクセスに関係なく、[変更者] 列には承認者の電子メールが取得されます。ただし、[変更者] の値は変わります。行のコピー オートメーションを試みましたが、[変更者] の値は「automation@smartsheet」に変わります。 .com」。😅
コードにより、電子メールの承認値が更新されました。 (その後、「変更済み」列で承認者の電子メールが失われます。)
サイード・ムハフザル ✭✭✭✭✭
@jmyzk_cloudsmart_jp
こんにちは。ご返信ありがとうございます。 API はまだ未熟なので、ご容赦ください 😀 、Get Approvers コードはどこにインストールしますか? Smartsheet で実行できますか?
jmyzk_cloudsmart_jp ✭✭✭✭✭✭
こんにちは@サイード・ムハフザル
テストには Google Colab を使用します。
https://colab.research.google.com/?utm_source=scs-index
リンクをクリックし、Google アカウントでログインします。
私のコードを貼り付けて、次の操作を行ってください。
再生ボタンをクリックします。
再生ボタンをクリックします。
サイード・ムハフザル ✭✭✭✭✭
どうもありがとう@jmyzk_cloudsmart_jp これを試してみます。以前に試してみましたが、列 ID がうまくいきませんでした。調査によると、Bridge も調べる必要があるかもしれません:(
現時点で考えられるもう 1 つの解決策は、承認リクエストの代わりに更新リクエストを使用することです。ちょっと遊んでみましょうが、ご意見に感謝します。ありがとう。
ロバート・マン ✭✭
私の経験から言えば、「変更者」列には承認者の電子メール アドレスが記録されず、記録できず、単に承認者の列からセル データが取得されるだけです (つまり、転送された承認電子メールの列には間違いなく間違った値が含まれます)。したがって、これは真の監査ログではありません。
jmyzk_cloudsmart_jp ✭✭✭✭✭✭
こんにちは@ロバート・マン
回答で「 「Modified By」を取得する」と書いたときは、もっと注意するべきでした。
私が参照していた「Modified By」は、 API コードを使用して取得したCellHistory オブジェクトの modifiedBy オブジェクトです。コードは、「Modified By」列の値を取得するのではなく、「Approval Status」列のセル履歴値を取得します。
したがって、セル履歴には実際の監査値があるため、「承認者メール」は有効な監査ログであると考えます。
{
"pageNumber": 1,
"pageSize": 50,
"totalPages": 25,
"totalCount": 136,
"data":
[
{
"modifiedAt": "2019-08-24T14:15:22Z",
"modifiedBy":
{
"email": "jane.doe@smartsheet.com",
"name": "Jane Doe"
},
"columnId": 0,
"columnType": "string",
"conditionalFormat": "string",
"displayValue": "string",
"format": "string",
"formula": "string",
"hyperlink":
{
"reportId": 0,
"sheetId": 0,
"sightId": 0,
"url": "string"
},
"image":
{
"altText": "string",
"height": 0,
"id": "string",
"width": 0
},
"linkInFromCell":
{
"columnId": 0,
"rowId": 0,
"sheetId": 0,
"sheetName": "string",
"status": "BLOCKED"
},
"linksOutToCells":
[
{
"columnId": 0,
"rowId": 0,
"sheetId": 0,
"sheetName": "string",
"status": "BLOCKED"
}
],
"objectValue":
{
"objectType": "ABSTRACT_DATETIME"
},
"overrideValidation": true,
"strict": true,
"value": "string"
}
]
}
ロバート・マン ✭✭
分かりました、素晴らしい仕事でした!!