前回、以下の記事で「Zoho Forms」のデータをスプレッドシートに連携する方法について書きました。
今回は、上記の内容を応用して、「Zoho Forms」のデータをkintoneに連携してみます。
Zoho Forms → スプレッドシート →kintone
の流れで、データを連携する方法になります。
kintoneでアプリを作成する
上記の記事で作成したフォームに合わせて、以下のようなアプリを作りました。
この時、フィールドコードはフィールド名と同じにしておきます。
スプレッドシートと連携するために、APIトークンを作成する
設定から「APIトークン」を選択します。
以下のような画面が表示されるので、「生成する」ボタンをクリックします。
APIトークンを生成すると、以下のように表示されます。
今回は、スプレッドシートからレコードを追加したいので、アクセス権の「レコード追加」にチェックを入れます。
APIトークンは後で使うので、メモしておいてください。
生成が完了したら、左上の「保存」ボタンをクリックします。
アプリの設定画面に戻るので、「アプリを更新」ボタンをクリックして、アプリを更新します。
スプレッドシートからkintoneに連携する
スプレッドシートからkintoneに連携するには、GASを使用します。
コードは以下のようになります。
function registerEntry(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 登録対象レコードを取得する
var lastRow = sheet.getRange("A:A").getValues().filter(String).length;
var data = sheet.getRange(lastRow, 1, 1, 9).getValues()[0];
// 登録済みだったら処理しない
// ※スプレッドシートを直接編集した場合にもトリガーが動くので、制御しておく
if (data[data.length -1] != "") {
return;
}
// 申込登録データ
var postRecord = {
"お名前": {"value": data[2]},
"メールアドレス": {"value": data[3]},
"件名": {"value": data[4]},
"内容": {"value": data[5]},
};
// kintoneにレコードを追加
createKintoneRecord(postRecord, "[ここにAPIトークンを入れる]", [ここにアプリIDを入れる]);
// 完了をスプレッドシートに書き込む
sheet.getRange(lastRow, data.length).setValue(true);
}
function createKintoneRecord(record, apiToken, appId) {
var urlPost = "[ここにkintoneのURLを入れる]/k/v1/record.json";
var postData = {
"app": appId,
"record": record
};
var options = {
"method": "post",
"contentType": "application/json",
"headers": {
"X-Cybozu-API-Token": apiToken
},
"payload": JSON.stringify(postData)
};
var res = UrlFetchApp.fetch(urlPost, options);
return res;
}
スプレッドシートが変更されると、registerEntry関数が実行されるようにします。(設定は後述)
5行目、6行目でスプレッドシートの最終行を取得し、最終行のデータを登録対象とします。
10行目ではI列を見ていて、空だったら処理を終了としています。
これはスプレッドシートを直接編集した場合にもトリガーが実行されるのを制御し、最終行のデータが登録済みだったら何も処理をしないようにします。
15行目が登録するデータです。
kintoneアプリでは「日時」という項目を用意していますが、日時はkintoneの機能で登録日時が入るようにしたので、GASでは指定していません。
ここの連想配列で指定している名前が、kintoneアプリのフィールドコードと一致している必要があります。
23行目がkintoneに登録する関数(別の関数としました)
アプリ作成時にメモしておいたAPIトークンとアプリIDを記述します。
アプリIDは、アプリを開くとURLが以下の形式になっていると思います。
[kintoneのURL]/k/52/
この末尾の数字がアプリIDです。
26行目で完了したことをスプレッドシートに書き込んで、2重で登録されないように制御します。
29行目からがkintoneに登録する関数です。
30行目が登録で使用するURLなので、自身のkintoneのURLを記述します。
あとは44行目で対象のURLにpostすると、データが登録されます。
トリガーの設定
スプレッドシートにデータが書き込まれたタイミングで、上記のコードが実行されるようにします。
これで、Zoho Formsにデータが送信される → スプレッドシートにデータが連携される → kintoneにデータが連携される という流れができます。
トリガーは以下のようにスプレッドシートが変更されたタイミングで実行されるようにします。
Zoho Formsでデータを送信する
以上で設定は完了したので、実際にZoho Formsからデータを送信してみます。
フォームで以下のように入力して、データを送信しました。
スプレッドシートには以下のように連携されます。
I列がTRUEとなっていて、kintoneへの連携も完了していることが分かります。
kintoneには以下のように登録されます。
kintoneにも登録されていることが確認できました。
これでZoho Formsからkintoneに連携することができました。