LoginSignup
0
1

More than 3 years have passed since last update.

【kintone】Googleフォームからレコードを編集(更新)する

Last updated at Posted at 2020-10-29

先日、Googleフォームからレコードを登録する方法を試しました。

【kintone】Googleフォームからレコードを登録する

今回は前回の続きで「編集(更新)」してみたいと思います。
前回のアプリとGoogleフォームを使います。

アプリの設定を変更する

前回のアプリを使います。

Emailの値の重複を禁止する

updateKeyにしたいので、「値の重複を禁止する」にチェックを入れてください。
※Emailのフィールドの種類はリンクではなくて文字列(1行)フィールドです。
image.png

APIトークン設定変更

「レコード編集」にチェックを入れて保存してください。

GASを書き換える

  • 同じメールアドレスだったら、他の情報を上書きする
  • 新しいメールアドレスだったら新規登録

となるようにしたいと思います。

コードはこんな感じ。非同期処理しなくても動いたんですが、いいのかなこれで?
詳しい方いらっしゃったら教えて下さいm(_ _)m

function sendToKintone(e) {
    'use strict';
    const subdomain = "サブドメイン";//.cybozu.comの前のサブドメイン名
    const apps = {
        YOUR_APPLICATION: { appid: アプリID, name: "アプリの名前", token: "APIトークン" }
    };
    const manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリの初期化

    //アンケートの回答を取得
    const itemResponses = e.response.getItemResponses();
    const email = e.response.getRespondentEmail();
    let name, attend;

    itemResponses.forEach(item=>{                         
        switch (item.getItem().getTitle()) {
            case "名前":
                name = item.getResponse();
                break;
            case "参加/不参加":
                attend=item.getResponse();
                break;
        }                                           
    });

    //入力したemailアドレスが既にレコードにあるか調べる(件数が戻ってくる)
    const retSearch =  searchRecords(manager,email);

    let code, records;
    if(retSearch == 0){
        console.log("新規");
        records =[{
            "Email":{ "value":email},
            "name":{"value":name},
            "attend":{"value":attend}
        }];
        code=  createRecords(manager,records);
    }else{
        console.log("編集(更新)");
        records =[{
            "updateKey":{"field":"Email", "value":email},
            "record":{
            "name":{"value":name},
            "attend":{"value":attend}        
            }
        }];
        code =  editRecords(manager, records);
    }
    console.log(code);
}

//入力したEmailアドレスがすでにあるかどうか調べている
function searchRecords(manager,email){
  const query = 'Email = "' + email + '"'
  const response = manager.search("YOUR_APPLICATION", query);
  const content = JSON.parse(response.getContentText());
  const records = content.records;
  return records.length;
}

//新規登録
function createRecords(manager,records){
  const response = manager.create("YOUR_APPLICATION", records);//kintone レコードの生成
  const code = response.getResponseCode();
  return code;
}

//編集(更新)
function editRecords(manager,records){
  const response = manager.update("YOUR_APPLICATION", records);//kintone レコードの更新
  const code = response.getResponseCode();
  return code;
}

アンケートを送信してみる

こんな感じに新規登録&更新することができます。
anketo.gif

まとめ

新規登録&更新を何も考えずにやってみましたが、これだけだといたずらし放題になってしまうので、色々と工夫が必要かと思います。
というわけで、ちょっとした内輪のアンケートとかに使ってみるといいかもしれないですね^0^
また、フォームを簡単に作れる連携サービスなどもあるので、そちらを使ってみるのもいいかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1