Google Workspace Flows(アルファ版)からGoogle Apps Scriptを呼び出してみた
はじめに
アノテーションの髙嶋です。
先日、Google Workspace Flows(以降、Flows)のアルファ版が使用できるようになりました。今回はGoogle Workspace FlowsからGoogle Apps Script(以降、GAS)を呼び出せるかを試してみたのでその方法を紹介します。
やること
FlowsからGASを呼び出せるように設定します。そのために必要なことは下記になります。
- GASをアドオンとして設定する
- Flowsのワークフローからアドオンを呼び出すように設定する
また、今回の内容はこちらのページを参考に試しています。
アドオン設定
GASのウェブエディタから設定します。
コード準備
今回、ファイルとしては下記2つを使用します。
- appsscript.json
- code.gs
アドオンの処理内容としてはFlowsから渡されたパラメータの値を変換(末尾に文字を追加)する、というようにしています。
※ファイル内に記載している各項目の詳細な確認を割愛した状態で今回は進めています。(もし記述として間違っている箇所があれば、ご指摘ください)
{
"timeZone": "Asia/Tokyo",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Util",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "actionElement",
"state": "ACTIVE",
"name": "Convert",
"workflowAction": {
"inputs": [
{
"id": "id",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "result",
"description": "result",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"onConfigFunction": "onConfigFunction",
"onExecuteFunction": "onExecuteFunction"
}
}
]
}
}
}
addOnsの設定とその中にflowsの設定を記述してます。この記述がないと、アドオンのインストールボタンが表示されませんでした。
コードと画面の表示を見たところ、common.nameがFlowsの画面に表示されるグループ的な名前で、workflowElements.nameがアドオン自体の名前になるようです。
※logoについては参考ページのままなので、アドオンの内容とは合っていません
onConfigFunctionとonExecuteFunctionに設定する値はGASで定義している関数と対応し、onConfigFunctionはFlowsで設定する際の描画に関する関数、onExecuteFunctionが実行時に呼ばれる関数のようです。
function onConfigFunction() {
return {
"action": {
"navigations": [
{
"push_card": {
"sections": [
{
"widgets": [
{
"textInput": {
"name": "id",
"label": "ID",
"hostAppDataSource" : {
"workflowDataSource" : {
"includeVariables" : true
}
}
}
}
]
}
]
}
}
]
}
};
}
function outputVariables(variableDataMap) {
const workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.setVariableDataMap(variableDataMap);
const hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
const renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
function onExecuteFunction(event) {
console.log("input: " + JSON.stringify(event));
const id = event.workflow.actionInvocation.inputs["id"].stringValues[0];
const variableDataMap = { "result": AddOnsResponseService.newVariableData().addStringValue(`${id}/abcdefg`) };
return outputVariables(variableDataMap);
}
Flowsから呼ばれる関数を定義しています。
onConfigFunction()はパラメータの入力に関して記述し、構成カードと呼ばれる形式にする必要があるようです(参考)
onExecuteFunction()から呼んでいるoutputVariables()の内容はFlowsへ戻り値を返す際のお作法、という認識でいます。(サンプルのまま)
インストール
上記で設定したコードをアドオンとしてインストールします。
WEBエディタの上にある、「デプロイ」→「デプロイをテスト」をクリックして画面を開きます。

その中にApplication(s):Flowsの「インストール」ボタンがあるのでこれをクリックします。

※前述したようにappsscript.jsonに"addOns"の記述がないと「インストール」ボタンは表示されないようです
これでアドオンの準備は完了です。
ワークフロー設定
次は設定したアドオンをFlowsのワークフローへ組み込んでいきます。
設定
下記URLを開き、"+"ボタン(New agents)をクリックします。
https://flows.workspace.google.com/
"starter"はなんでもいいですが、今回は"On schedule"を選択します。

"Chose a step"で先ほど追加したアドオンを設定します。追加したアドオンの表示位置は"Add step"の"Tasks"の下でした。

アドオンに渡すパラメータの設定が必要なので、今回は固定値で適当に"123456"と設定しています。処理を実行すると、この値が変換された値が返ってくるはずです。

また、今回はアドオンからの戻り値の確認用に、スプレッドシートへの連携処理を追加し、シートへ出力するように設定しています。

これでFlowsの設定は完了です。
実行
設定したワークフローを実行していきます。今回はテストとして「Test Run」ボタンから実行します。

「Start」ボタンをクリックするとワークフローが実行されるので、完了するのを待ちます。

連携先のスプレッドシートにアドオンで変換された値が出力され、アドオンが実行されていることが確認できます。

まとめ
Google Workspace FlowsからGoogle Apps Scriptを呼び出しを試しました。
Google Workspace Flows自体はまだアルファ版なのでこれからも色々と機能追加されていくでしょうし、今まで単独で動かしていたGASがFlowsに組み込めることで、GAS同士や他との連携もやりやすくなると思います。
"どのように業務で活用していくか?"はこれから模索していきますが、今後の機能更新を楽しみにしつつ、有効活用できるようにしていきたいと思います。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。







