新規投稿
フォローする

Googleフォーム回答後、Kintone既存レコードからキーを指定して一致レコードを更新する

JavaScript初心者でございます。

 

「Google フォームとkintoneを連携してみよう!」の記事を参考に

全く同じ様にGoogleフォームとKintoneのアプリを作成し、

無事にフォーム回答後、Kintone アプリ内に新規レコードを追加することができました。

 

コードを記載いたします。


function getFormResponse(e) {

'use strict';

var itemResponses = e.response.getItemResponses();//アンケートの回答を取得

var records = '[';

records += Utilities.formatString('{"Email": { "value": "%s" }', e.response.getRespondentEmail());//回答者のEmailアドレスの取得

for (var i = 0; i < itemResponses.length; i++) {

var itemResponse = itemResponses[i];

switch (itemResponse.getItem().getTitle()) {

case "参加しますか?":

records += Utilities.formatString(',"attend" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "参加人数":

records += Utilities.formatString(',"number_of_attendee" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "参加者の名前を記入してください":

records += Utilities.formatString(',"name_of_attendee" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

}

}

records += '}]';

Logger.log('Response JSON is "%s"', records);

return records;

}

 

function sendToKintone(e) {

'use strict';

Logger.log('Form submitted');

var subdomain = "{subdomain}.cybozu.com";//サブドメイン名

var apps = {

YOUR_APPLICATION1: { appid: アプリID, name: "kintone Meetup 参加者", token: "kintoneアプリのAPIトークン" }

};

var manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリーの初期化

var str = getFormResponse(e);

str = str.replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t");

var records = JSON.parse(str);//JSON形式に変換

var response = manager.create("YOUR_APPLICATION1", records);//kintone レコードの生成

// ステータスコード

// 成功すれば200になる

var code = response.getResponseCode();

Logger.log('Response code is "%s"', code);

}



この次のステップとして、メールアドレスを updateKey として、

一致する既存レコードに更新をかける、ということを考えております。

その場合のコードの変更点として、Cybozu developer network 運営局様より

■メールアドレスを重複禁止にし、updateKey を使った更新をする。

■下記の2行を更新処理に書き換える。

var records = JSON.parse(str);//JSON形式に変換

var response = manager.create("YOUR_APPLICATION1", records);//kintone レコードの生成

の2点をご指摘いただきました。

 

 

■メールアドレスを重複禁止にし、updateKey を使った更新をする。

→どこのあたりに「レコードの更新(PUT)」に記載がある様な updateKey のコードを書き込んでいけばいいのかが不明。

 

■下記の2行を更新処理に書き換える。

var records = JSON.parse(str);//JSON形式に変換

var response = manager.create("YOUR_APPLICATION1", records);//kintone レコードの生成

→ manager.create を manager.update に置き換えるだけでよろしいのでしょうか?

 

わかりやすい様、新しいフォームではなく同じフォームを使い、

GASだけを書き換える方向でご指摘いただけますと幸いです。

 

上記の2点以外にも変更が必要な箇所がある場合、合わせてよろしくお願いいたします。

0

0件のコメント

サインインしてコメントを残してください。