プラグイン クイックスタート
マニフェストファイルの編集{ "package": { "name": "クイックスタートのサンプルプラグイン", "description": "メールアドレスの検証をおこなうプラグインです。", "plugin_code": "jp.co.collabo-style.demo_plugin", "version": "1.0.0", "author": "株式会社コラボスタイル", "type": "form", "help": "https://collaboflow.zendesk.com/hc/ja/sections/360000040276" }, "config": { "path": "index.html" }, "customize": { "js": [ { "type": "file", "path": "js/index.js" } ], "css": [] }}項目名 | 説明 |
name | プラグインの一覧などで表示されるプラグイン名です。 |
description | プラグインの概要を説明です。 |
plugin_code | プラグインを判別するためのコードです。プラグインを更新する際に同一のプラグインかのチェックのために利用します。 |
version | バージョン番号です。 |
author | 開発者名です。 |
type | 固定で formを入力します。 |
help | プラグイン変数設定画面からリンクをされるプラグインのヘルプページのURLです。 |
項目名 | 説明 |
path | プラグイン変数の設定画面のHTMLファイルのパスです(独立したページとして表示されます)。 |
項目名 | 説明 |
js | 申請書画面で読み込まれるカスタムJavaScriptファイルを配列で指定します。 ※ typeには fileまたは URLと記述してください。 ※ pathにはプラグインのルートフォルダーからのパス、または https://...から記述してください。 ※カスタムファイルが存在しない場合には空の配列 []で定義をしてください。 |
css | 申請書画面で読み込まれるカスタムCSSファイルを配列で指定します。 記述方法については、jsと同じです。 |
JavaScriptファイルの作成(function() { "use strict"; /** * 有効なメールアドレスかチェックします。 * * @param {*} mailAddress */ function isValidMailAddress(mailAddress) { const validMailRegex = /^[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9]+$/;
if (!validMailRegex.test(mailAddress)) { return false; } // 連続するドットが含まれる場合は無効 if (mailAddress.indexOf('..') !== -1) { return false; }
return true; }
// プラグイン関数のインスタンスの作成 const pluginInstance = new collaboflow.plugin();
// 申請内容確認ボタンクリックイベント collaboflow.events.on('request.input.check', function (e) { // プラグインの設定値を取得 pluginInstance.getSetting("common").then((response) => { const target = response.settings.plugin_settings.target; const mailAddress = e.parts[target].value; if (isValidMailAddress(mailAddress)){ return true; } alert('項目「メールアドレス」に入力されたメールアドレスが不正です。'); return false; }); });})();項目名 | 説明 | 戻り値 |
collaboflow.plugin.getSettings() | プラグイン変数をすべて取得します。 | Promise<Object> |
collaboflow.plugin.getSetting(formVersion) | 指定した版のプラグイン変数を取得します。 パラメータとしてフォームの版番号を指定すると、版に紐づいたプラグイン変数を取得できます。 | Promise<Object> |
項目名 | 説明 | 戻り値 |
collaboflow.form.getFormID() | 現在開いているフォームのIDを取得します。 | string |
collaboflow.form.getFormVersion() | 現在開いている申請書のフォーム版番号を取得します | number |
HTMLファイル<!DOCTYPE html><html lang="ja"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>プラグイン設定エディター</title> <script src="js/settings/settings.js"></script> <style> .plugin-editor { height: 50px; width: 100%; } </style></head><body> <h2>メールアドレス検証プラグイン設定</h2> <div class="plugin-editor"> <select id="select-box"></select> <button id="save-button">保存</button> </div></body></html>JavaScriptファイル/** * プラグイン設定画面の初期化処理 * フォームのパーツ一覧を取得し、設定済みの値をセレクトボックスに反映します。 */async function initializePlugin() { // 1. 操作対象となるUI要素(DOM)を取得 const saveButton = document.getElementById('save-button'); const targetSelect = document.getElementById('select-box');
// 要素が存在しない場合はエラーを避けるため処理を中断 if (!saveButton || !targetSelect) return;
try { // 2. フォームのパーツ一覧を取得し、選択肢を構築 const formItems = await collaboflow.form.getFormItems(); const fragment = document.createDocumentFragment();
for (const [fieldId, field] of Object.entries(formItems.parts)) { // テキスト形式のパーツのみを選択肢に追加 if (field.type === 'text') { const option = new Option(field.name, fieldId); // (表示名, 値) fragment.appendChild(option); } } targetSelect.appendChild(fragment);
// 3. 保存されている設定を取得してUIに反映 const configResponse = await collaboflow.plugin.getSetting("common"); // APIレスポンスから、保存されていたターゲットIDを安全に抽出 const savedFieldId = configResponse?.settings?.plugin_settings?.target;
if (savedFieldId) { targetSelect.value = savedFieldId; }
// 4. 保存ボタンクリック時のアクションを定義 saveButton.addEventListener('click', async () => { const selectedId = targetSelect.value; const selectedName = targetSelect.selectedOptions[0]?.text;
try { // 設定を保存 await collaboflow.plugin.saveSettings({ target: selectedId }); alert(`「${selectedName}」を対象として保存しました。`); } catch (error) { alert('保存に失敗しました。'); console.error('Save failed:', error); } });
} catch (error) { console.error('Initialization failed:', error); }}
// ページの読み込みが完了したタイミングで初期化を実行document.addEventListener('DOMContentLoaded', initializePlugin);項目名 | 説明 | 戻り値 |
collaboflow.getLoginUser() | 現在操作をしているユーザーの情報を取得します。 | Promise<Object> |
項目名 | 説明 | 戻り値 |
collaboflow.plugin.getSettings() | プラグイン変数をすべて取得します。 | Promise<Object> |
collaboflow.plugin.getSetting(formVersion) | 指定した版のプラグイン変数を取得します。 パラメータとしてフォームの版番号を指定すると、版に紐づいたプラグイン変数を取得できます。 | Promise<Object> |
collaboflow.plugin.saveSettings(settigs,formVersion) | プラグイン変数の保存をします。 パラメーターのformVersionは省略が可能です。省略した場合には、版に紐づかない設定として保存されます。 | Promise<Object> |
項目名 | 説明 | 戻り値 |
collaboflow.form.getFormItems(formVersion) | 現在開いているフォームのパーツ情報を取得します。 パラメーターformVersionは省略可能です。省略した場合には最新版のフォームのパーツ情報を取得します。 | string |
collaboflow.form.getFormVersion() | 現在開いている申請書のフォーム版番号を取得します | number |
