API Service Tools

CloudsmartがSmartsheetを利用するにあたって、開発してきたAPI Service Toolsを紹介いたします。

APIサービスとは

Smartsheet APIの利用によって元々のSmartsheetの機能にない機能を追加したり、Smartsheetの機能(例、列関数を適用する、セルに画像を貼り付ける、添付ファイルを取得する)をプログラムにより大量に反復継続して利用することが可能となります。

運用中ツール

現在利用しているツールには以下のようなものがありますが、順次、説明を追加し、利用方法などを公開していきます。

current api services menu

追加解説を加えていったものから、太字表示して、リンク先を本ホームページ内の記事に変更するようにします。

  • 列情報作成等サービス
    • シートの列情報取得し、列情報シート (Column Info Table) に表示するサービス
      列数が数十~数百ある場合、複雑な列の式がある場合などの列の管理に利用
  • 列情報更新サービス
    • 上記のサービスで作成した列情報のシートの基づき、シートの列を編集するサービス
      例えば、列名、幅、列の関数、オプションなどを大量に編集する場合に利用
  • セルに画像貼り付サービス
    • 行に添付された画像ファイルを特定の列のセルに貼り付けるサービス
      モバイルアプリ等で添付した写真をセルに自動貼り付け、更新リクエストで外部ユーザーに貼り付け依頼した画像をセルに自動貼り付けする場合に利用
  • セルリンク先表示サービス
    • セルのリンク先のシート名とそのURLを行の会話に貼り付けるサービス
      セルリンクの表示が現在五千に制限されているため、それを超える例えば、1万以上のセルリンク先情報にアクセスするために利用

開発を検討中のツール

以下のようなツールを開発予定です。
特に日本の組織の場合、組織単位でアクセス制御を行うことが重要なので、グループ、ワークスペース共有関係のツールは重要だと思います。
また、ドロップダウンリストの他のリストによる更新の自動化は、Smartsheetに欠けている重要な機能なので、早期の開発を検討したいと思います。

  • 組織管理・グループ管理
    • 人事異動などであるユーザが、ある組織から別の組織に移動した場合に、所属するグループが自動で更新されるサービス
  • ドロップダウンリストの自動更新
    • 同一ワークススペース内などのシートの列のドロップダウンリストをマスターシートのオプションの更新により、更新できるようにするサービス
  • 列名の統一
    • 同一ワークススペース内などのシートの列名を統一するサービス
      例えば、顧客、お客様等複数の列名が使われている場合、これを1に統一
  • クロスシート参照の更新自動化

各サービス共通の利用方法

サービス利用のご相談

こちらのフォームから「APIサービス」を選択の上、ご連絡ください。

フォームによるリクエスト

利用はSmartsheetユーザがなじみの深いフォームから行えるようになっています。
例えば、セルリンク情報取得の場合、フォームでアウトバウンドリンクの情報を表示するシートIDとリンク先のシートが保管されているワークスペースのIDを入力するようになっています。

必要な権限の付与

以下のように、対象となる利用者のシートワークスペース内のシートの閲覧権限及び列の更新、画像貼り付け、セルのリンクアウト情報のコメント(会話)記録などの場合、シート編集権限が必要です。

  • シート、ワークスペース : 閲覧権限
    • サービス提供対象のシート、あるいはシートが存在するワークスペースの閲覧権限(各シートの必要情報(例、セルリンク)を確認します。)
  • 対象シート : 編集権限
    • 例えば、セルのリンクアウト情報サービスの場合、シートにリンクアウト情報を行の会話(コメント)として書き込む権限が必要です。

共有方式とする理由

OAuth認証のリスク

ユーザーのシートなどに対して、APIを利用してサービスを提供する場合、下のイメージのようなOAuthの画面を表示して、閲覧、編集などの権限付与するのが一般ですが、付与した閲覧、編集等の権限は、付与者が権限を有する全てのシートが対象となります。
従って、例えばドロップダウンリストの自動更新のサービスを有償で提供しているものもありますが、この認証のリスクがあり、企業等では利用が難しいのではないかと思います。
このリスクを回避するには、サービス利用用のアカウントを用い、そのアカウントにはそのサービス利用に必要なシート等のみの閲覧、編集等の権限を与えておく、という方法が考えられますが、別のアカウントを用意する必要があるといった問題があります。

共有方式によるリスク軽減

権限付与対象の範囲の制限

共有方式もOAuth認証と同様のリスクがありますが、OAuth認証との大きな違いは、与えられる権限は、共有したシート、あるいは、ワークスペースの範囲に止まるということです。

与える権限はサービス利用に必要最低限で足りる

また、与える権限はサービスの利用に必要最低限のものであれば足りるので、例えば、コメント(会話)に情報を書き込む例であれば、「コメント作成者のアクセス権」のみで足ります。したがってシート本体のデータを編集される恐れがなく、また、不必要な情報は列を非表示にしておけばよいので、リスクは秘密情報を見られるリスクも軽減できます。

アクティビティーログなどによる監査

また、OAuth認証の場合、アクティビティーログやセルの履歴では、認証を与えた者のアクティビティーとして記録されるところ、共有方式では、共有先のアカウント名(例、app@cloudsmart.jp)で記録されるため、シートの閲覧は作業を行う以上避けられませんが、不必要な編集等を行っていないか監査が可能となります。

専用サービスの提供によるリスク回避

共有方式によるリスク軽減を行ったとしても、一定程度のリスクは残るので、その場合は、ユーザー専用のカスタムサービスを構築することなります。
CloudsmartはGCP(Google Cloud Platform)上にAPIサービスを構築しておりますが、カスタムサービスの提供の場合は、同様のユーザー専用のサービスを構築し、お客様のAPIトークンをSecret Managerに保管し、実行じにアクセル方式とし、その他の方式のリスクを回避します。