自動処理工程(Google Drive 連携)の後工程で格納フォルダ URL を取得する

自動処理工程(Google Drive 連携)の後工程で Google Apps Script を介して格納フォルダ URL を取得する方法を解説します。

あけましておめでとうございます。
こんにちは、古久保です。

2017年もハリキって Questetra BPM Suite の利用方法を紹介して参ります。
よろしくお願い致します。

今回は、Google Drive 連携に関してのお話です。

2016年9月に「Google Apps for Work」が「G Suite」に名前が変わりました。

「Google Apps for Work」が「G Suite」に改称 AI機能や「Team Drive」を追加
Googleが、「Google Apps for Work」を「G Suite」に改称し、総合的な企業向けクラウドサービス「Google Cloud」の構成要素の1つとした。人工知能応用のアドバイス機能「Explore」やグループで使えるドライブ「Team Drives」などの新機能も追加した。

http://www.itmedia.co.jp/news/articles/1609/30/news078.html

今後のバージョンアップが期待されており(と、私は思う)、「G Suite」のご利用が Questetra 利用企業様でも進んでいます。
(それに伴い?)Questetra の Google Drive 連携機能の利用も進んでいます。

業務ファイルがGoogleドライブにも自動保存されるように設定する
Drive自動保存[サービスタスク(Googleドライブ)]をフロー図の途中に配置すれば、案件の到達と同時にファイル型の業務データが Google ドライブに自動保存されるようになります。例えば、”上司承認が済んだ請求書PDF” を自動的に Google ドライブに転送する事ができます。

http://www.questetra.com/ja/tour/m2/m229/

ご利用が進みますと、様々なご要望が出てきます。

◆自動処理工程(Google Drive 連携)の利用背景・ご要望

そもそも Google Drive 連携を利用する背景として

* 業務上で作成されたファイルは、全て Google Drive でまとめて管理したい。
* Google Drive 上でファイル管理することにより、閲覧性・検索性を容易にしたい。

等があります。
なるほど!なるほど!であります。

そんな背景の中、少し変わったご要望をお聞きしました。

* Google Drive に保存したファイルが格納されたフォルダの URL を( Questetra で管理している)案件のデータ項目として持たせたい。

少し深掘りさせてもらいますと、

* ファイルを閲覧したい時に( Questetra で管理している)ファイル型データ項目だと、いちいち、ダウンロードしなければならない。(面倒だ)
* 特にファイルが複数ある時、Google Drive 上の Viewer を使いたい。(閲覧が楽だ)

です。(で、ですよねー)

そんなご要望の対応方法例をご紹介します。

◆(Google Drive )格納フォルダ URL 取得実装例

image1

実装例は、メッセージ送信中間イベント(http)を用いた、Google Apps Script での実装です。

image2
image3
image4

<Google Apps Script 実装例>

function doGet(e) {
  var folderName = e.parameter.folderName  // 検索対象のフォルダ名を取得
  var folders = DriveApp.getFoldersByName(folderName)  // フォルダ名検索
  while (folders.hasNext()) {
    var folder = folders.next()
  }
  return ContentService.createTextOutput(folder.getUrl())  // 対象フォルダの URL を返す
}

ポイントは、

* 格納フォルダ名は、(Questetra 実行上の)案件ユニークにしている。
(実装例は、{プロセス開始日付}-{プロセスID} を格納フォルダ名にしています)

です。
Google Apps Script の実装例と Class リファレンス(後述)を参照してもらうとわかりますが、フォルダパスから該当の格納フォルダを特定することはできません。(詳細説明、割愛しまーす)
唯一、利用できそうな getFoldersByName() メソッドを使用します。
しかしながら、同一フォルダ名を許しているので同じフォルダ名が存在すると複数のフォルダオブジェクトを取得することになります
それを避ける為、格納フォルダ名をユニークにしています。

<Google Apps Script ファイル/フォルダアクセス Class リファレンス>
* getFoldersByName(name)

https://developers.google.com/apps-script/reference/drive/drive-app

image5

◆あとがき

G Suite と Questetra BPM Suite を、もっともっと活用頂ければ幸いです。

「簡単にできるな!」と思っていましたが、結果、手のかかる対応となりました。
また、詳しく触れておりませんが、現在の実装では、セキュリティ的に不十分です。
(Google Apps Script の実行権限は、URL を知っていれば実行可能の権限設定にしています)

今回の実装は、Google ドキュメントに実装されている Google Apps Script へのアクセスで URL 取得を実現しています。
セキュリティを確保するためには、 OAuth 認証を用いたアクセスを実装する必要があります。
今回の解説からは、割愛を致しますが、実装時には、ご注意を頂けますようお願い致します。

不明点がありましたらご連絡を頂けますようお願い致します。

2017-01-13

Masato Furukubo の紹介

Questetra, Inc. Sales Department
Masato Furukubo の投稿をすべて表示

あわせて読みたい
50.Questetra Tips の前の記事 自らの API をたたいて処理を自動化する方法
50.Questetra Tips の次の記事 LINE とクラウド BPM を連携する方法
Masato Furukubo の他の記事 Questetra の評価方法は?(ステップ2)

アーカイブ

 RSS