> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# サーベイ回答を Google Sheets に送信する

> Google Apps Script と Widget Studio のサーベイ設定を構成して、HTTP POST 経由でサーベイ回答を Google Sheet に自動送信します。

<Note>
  Kameleoon でウィジェットの回答を収集し CSV にエクスポートしたい場合は、[こちら](./survey-data-export) の記事を参照してください。
</Note>

本記事では、次のことを学びます。

* サーベイデータを受け取るための Google Sheet の構成方法。
* 回答を Google Sheets に送信するための **Widget Studio** の **Survey Settings** タブの設定方法。

## Google Sheet を構成する

1. [Google Sheets](https://sheets.google.com/) にアクセスして新しいスプレッドシートを作成します。
2. タブの名前を **Sheet 1**(**デフォルト**)にします。
3. 最初の行に次のように列を定義します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-a-widget-with-the-widget-studio/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/google-sheet-row1.png)
</Frame>

**詳細:**

* **列 A** > **Date** と入力します。このセルは、各送信時の日時で自動的に入力されます。
* **列 B 以降** > ウィジェットに追加された各サーベイまたはフォーム要素の名前を入力します。

要素の名前は、**Design** セクションの **Content** タブにある要素ツリーで確認できます。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-a-widget-with-the-widget-studio/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/elements-tree.png)
</Frame>

要素(例: スケール)を選択すると、編集サイドバーの上部にその名前が表示されます。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-a-widget-with-the-widget-studio/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/edit-name-1536x842.png)
</Frame>

このウィジェットを例にしてみましょう。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-a-widget-with-the-widget-studio/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/example-widget-1536x1018.png)
</Frame>

このウィジェットには 2 つのサーベイ要素があります。したがって、Google Sheet の最初の行には次を入力する必要があります。

* **列 A:** Date
* **列 B:** Scale
* **列 C:** Long Answer

4. Google App Script を追加します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/0.png)
</Frame>

* **Extensions** > **App Script** をクリックします。新しい Google Script が開きます。名前を変更します(例: **My form data**)。
* すべてのコードを以下のものに置き換えます。

```javascript theme={null}
const sheetName = 'Sheet1'
  const scriptProp = PropertiesService.getScriptProperties()
  function initialSetup () {
    const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
    scriptProp.setProperty('key', activeSpreadsheet.getId())
  }
  function doPost (e) {
    const lock = LockService.getScriptLock()
    lock.tryLock(10000)
  try {
      const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
      const sheet = doc.getSheetByName(sheetName)
  const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
  const nextRow = sheet.getLastRow() + 1
  const newRow = headers.map(function(header) {
  return header === 'Date' ? new Date() : e.parameter[header]})
   sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
   return ContentService   .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))   .setMimeType(ContentService.MimeType.JSON)
  }
  catch (e) {
      return ContentService
        .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
        .setMimeType(ContentService.MimeType.JSON)
    }
  finally {
      lock.releaseLock()
    }
  }
```

<Note>
  何らかの理由でタブに「Sheet 1」と名前を付けられない場合は、スクリプトの最初の行を変更し、「Sheet 1」を実際のタブ名に置き換えてください。
</Note>

完了すると、スクリプトは次のようになります。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/1.png)
</Frame>

1. **Save project to Drive** をクリックします(**Run** の左側)。
2. **Debug** の右側のドロップダウンで **`initialSetup`** を選択します(デフォルトで選択されているはずです)。
3. **Run** をクリックします。

権限を求めるポップインが表示される場合があります。**Review permission** をクリックして次の画面に進みます。

Google がスクリプトをレビューしていないため、警告メッセージが表示される場合があります。フォームを更新するための適切な権限を設定するには、**Go to Mailing List (unsafe)** をクリックします。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/2.png)
</Frame>

スクリプトに正しい権限が与えられると、スクリプトエディタコンソールに次の出力が表示されるはずです。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/3.png)
</Frame>

左メニューで **Triggers** をクリックしてスクリプトのトリガーを追加します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/4.png)
</Frame>

次に、**Add trigger** をクリックします。

表示されるウィンドウで、次のオプションを選択します。

* **Choose which function to run:** `doPost`
* **Choose which deployment should run**: `Head`
* **Select event source:** `From spreadsheet`
* **Select event type:** `On form submit`

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/5.png)
</Frame>

**Save** をクリックします。

**Deploy** > **New deployment** をクリックします。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/6.png)
</Frame>

**Select type** の横の **歯車** アイコン > **Web app** をクリックします。

表示されるフォームで、次のオプションを選択します。

* **Description:** `My Form Data`(任意の名前で構いません。説明的なものにしてください)。
* **Web app > Execute as:** `Me`
* **Web app > Who has access:** `Anyone`

**Deploy** をクリックします。

<Warning>
  結果の正しい送信のために、**Who has access: `Anyone`** は必須です。
</Warning>

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/assets/widgets/create-csat-nps-and-surveys/send-survey-responses-to-google-sheets/7.png)
</Frame>

URL をコピーします。

## Widget Studio で Survey Settings を構成する

1. **Survey Settings** タブで、ユーザーが回答を送信するためにクリックするボタンを選択します。
2. **How are responses collected?** で、**HTTP Request (external)** を選択します。
   * **Request Name:** リクエストに名前を付けます(例: Send data to my Google Sheet)。
   * **Method:** **`POST`** を選択します。
   * **Action URL:** Google Apps Script で生成された URL を貼り付けます。
3. 構成を保存します。

## 設定をテストする

1. ウィジェットを **Preview** します。
2. サーベイに記入して **Submit** します。
3. Google Sheet に戻ります。

応答を含む新しい行が表示されるはずです。
