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(//g, "").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点以外にも変更が必要な箇所がある場合、合わせてよろしくお願いいたします。

こんにちは!

GASとkintone連携できるのですね!便利ですね!

元の参考ページがどちらか分からないので私なりに検索した結果でわかりにくいかも&ヒント程度となりますがスミマセン^^;

 

「updateKey」をどこに書くかですが、

は市川さんのソースと下記サイトを見比べてみてください。recordsをどう定義しているかがポイントかと思います。

https://qiita.com/Arahabica/items/063877b0da439020d2c2#create

https://qiita.com/Arahabica/items/063877b0da439020d2c2#update

 

↓のサイト内で「updateKey」を検索して、どのように「updateKey」を使っているか参考にされるといいかもしれません

レコードの更新(PUT)

https://developer.cybozu.io/hc/ja/articles/201941784-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B4%E6%96%B0-PUT-#step2

 

JavaScriptは色々試行錯誤してみるのが大切だと思いますので、是非色々試してみてください^^

(私も、GASとkintoneの連携を試してみたいと思います)