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

Googleフォームからkintoneにレコード登録できるらしい！
と知って、試してみた記録です。

参考ページ：

[Google フォームとkintoneを連携してみよう！
](https://developer.cybozu.io/hc/ja/articles/115003856483-Google-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%A8kintone%E3%82%92%E9%80%A3%E6%90%BA%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-)

[kintone とGoogle Apps Script連携](https://qiita.com/Arahabica/items/063877b0da439020d2c2)

## kintoneアプリを作成する

こんな感じで作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/9c0a2418-da31-c776-e3e3-c6210766ee48.png)

| フィールド | フィールド名 | フィールドコード |  |
|:-:|:-:|:-:|:-:|
|  文字列 (1行) | Email  | Email  |  必須 |
| 文字列 (1行)  | 名前  | Name  | 必須  |
| ラジオボタン  |  参加／不参加 | attend  | 必須、参加／不参加  |

※メールアドレスはあとでupdateKeyにしたいと思いまして、文字列(1行)にしてみました。

## APIトークン生成＆コピーする

APIトークンを生成して、「レコード追加」にチェックを入れておきましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/cdb11875-1056-6efd-5816-edfc5b310b94.png)



## Googleフォームを作成する
※Googleフォームの詳しい作成方法はここでは省略しますm(_ _)m

### メールアドレスを収集する設定にする
(1)歯車ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/8255be3b-41ab-f5ec-06d5-b8f32cf7a069.png)

(2)メールアドレスを収集するにチェック（回答のコピーを送信にチェック入れてもいいかも）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/3b7d2f2c-c467-62f0-748f-6de7ecdcd861.png)

(3)メールアドレス入力欄ができた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/28728cc2-1894-731e-86a3-48178e4f3530.png)

### 名前欄作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/c8ab0e84-7f30-76be-7819-0b546ec1212e.png)

### 参加／不参加欄作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/767ad962-ffa2-3bd5-aade-3b7e268eb364.png)


## gasを書く
画像のように操作して、スクリプトエディタを表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/dd2fad28-9039-63b8-709b-76e523c076a6.png)

### ライブラリとマニフェストファイルの設定
↓こちらのStep 9とStep 10を参考に、ライブラリと、マニフェストファイルの設定をします。
[Google フォームとkintoneを連携してみよう！](
https://developer.cybozu.io/hc/ja/articles/115003856483-Google-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%A8kintone%E3%82%92%E9%80%A3%E6%90%BA%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-)

### コードを書く
先程のdeveloper networkのサイトのstep 11のコードを参考に、下記のように書いておきます。


* サブドメイン
* アプリID
* アプリの名前
* APIトークン

をご使用の環境に合わせてください。

forEachやアロー演算子も使えるみたい。

```js
function getFormResponse(e) {
    'use strict';

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

    //追加するレコード作成
    let record = {};
    record["Email"] = {"value": e.response.getRespondentEmail()};
    itemResponses.forEach(item => {                         
        switch (item.getItem().getTitle()) {
            case "名前":
                record["name"] = {"value": item.getResponse()};
                break;
            case "参加／不参加":
                record["attend"] = {"value": item.getResponse()};
                break;
        }                                           
    });
    
    //recordを配列にして返す
    return [record];
}

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 records = getFormResponse(e);
  
    const response = manager.create("YOUR_APPLICATION", records);//kintone レコードの生成
    // ステータスコード
    const code = response.getResponseCode();   
}
```

## トリガーの設定
(1)「編集→現在のプロジェクトのトリガー」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/78adc41f-e2ab-3b98-2452-94fff12cdb4f.png)

(2) 右下の「トリガーを追加」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/77406a9c-8d6a-ddb0-4514-74ee62cabb1b.png)

(3) 実行する関数を選択で、上記コードをそのまま使用する場合は「sendToKintone」
イベントの種類を選択で「フォーム送信時」を選択して、「保存」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/31e69a98-907a-8058-77a3-8505d570747e.png)

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

アンケートに入力して、送信ボタンクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/9615deaf-7ef1-aee6-53cc-03edd1505547.png)


kintoneアプリに反映されましたでしょうか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/afacae92-497c-6bff-fbe0-3498cf730c5e.png)

## まとめ

Googleフォームとkintoneを連携させるためには、
アプリに合わせてフォームを作ったりコーディングしたりする必要があります。

なかなか大変ですが、ちょっとしたフォームが1つほしい、継続的には不要なんて場合には作ってみてはいかがでしょうか？？


また、簡単にフォーム連携ができるサービスなどもあるので試してみるのもいいかもしれません＾０＾！

ではでは！