テックブログ

エルカミーの技術ブログです

📄 Googleフォームの回答をNotionデータベースに追加する

はじめに

今回はGoogleフォームの回答をGoogle Apps ScriptとNotion APIを利用してNotionデータベースに追加する方法を紹介します。

Googleフォームの拡張機能である「Form to Notion」という機能を使えば簡単にNotionデータベースに回答を追加することが可能ですが、今回は回答を一部加工してNotionデータベースに追加することを目的としています。

Notion APIの設定

まず、NotionのAPIを使用するための準備をします。

既にAPIが使える状態の場合はこちらまで飛ばしてください。

新しいインテグレーションを作る

インテグレーションとは、複数の機能を1つのワークフローにまとめて機能させることを指します。

Notionインテグレーションは、Jira、Googleドライブ、SlackなどのツールをNotionに接続して、ワークフローを強化します。インテグレーションは、NotionのAPIを使用して構築されます。

まず、以下のサイトにアクセスします。

次に、アクセスしたサイトで、下の画像の赤枠で囲んである部分を選択して、新しいインテグレーションを作成します。

image block

基本情報を入力して送信ボタンをクリックします。

」が付いている項目は必須項目です。必須項目以外は任意で入力してください。

image block

送信ボタンをクリックすると、シークレットトークンが発行されます。

このトークンは後ほど必要になるのでメモしておいてください。

image block

また、インテグレーションのページの機能を選択すると、各種機能の設定ができるので、お好みで変更してください。

image block

以上でインテグレーションの作成は完了です。

データベースへのアクセス許可

次にNotion APIからのNotionデータベースへのアクセス許可を行います。

  1. Googleフォームの回答を追加したいデータベースに移動して右上の「・・・」をクリックします。
  2. クリックするとサイドバーが出てくるので、下にスクロールしてコネクトの追加を選択します。
  3. 先ほど作成したインテグレーションの名前を検索して選択します。
  4. 「続行しますか?」という質問に対してはいを選択します。

image block
image block

以上でNotion APIを使うための準備が完了します!

Google Apps Scriptの使い方

ここからは回答をNotionデータベースに追加する方法を解説します。

回答の取得・送信

まず、Googleフォームの編集ページの右上のアイコンのスクリプトエディタをクリックします。

image block

次に、Apps Scriptの左のサイドバーのエディタコード.gsを編集します。すでにコード.gsでファンクションを実装している場合は、別のファイルを作成することをおすすめします。

image block
📌
コード

以下のコードをfunction myFunction(){}の部分に張り付けて置き換えてください。

function submitForm(e){
  var itemResponses = e.response.getItemResponses();

	for (const itemResponse of itemResponses){
    var title = itemResponse.getItem().getTitle();
      if (title === '取り出したい質問名')       // ※1
        var last_name = itemResponse.getResponse();
      else if (title === '取り出したい質問名') 
        var first_name = itemResponse.getResponse();
  }

  var url = 'https://api.notion.com/v1/pages';
	var database_id = 'データベースID';         // ※2
  var notion_token = 'シークレットトークン';      // ※3
  var headers = {
    'Content-Type' : 'application/json; charset=UTF-8',
    'Authorization': 'Bearer ' + notion_token,
    'Notion-Version': '2022-06-28',
  };

  var post_data = {
    'parent': {'database_id': database_id},
    'properties': {                  // ※4
  };

  var options = {
    "method" : "post",
    "headers" : headers,
    "payload" : JSON.stringify(post_data)
  };

  return UrlFetchApp.fetch(url, options);
}

※1

「取り出したい質問名」という部分に、質問名を入れることで、指定した質問に対する回答を取り出すことができます。else ifに続く2行を同じように増やしていけば好きなだけ質問に対する回答を取り出すことができます。

※2

データベースIDを書き込んでください。

データベースIDの取得方法
  1. 今回データを追加したいNotionデータベースのページに移動します。
  2. 左上の共有をクリックします。
  3. リンクをコピーをクリックして、URLを取得します。
  4. 取得したページのURL(https://www.notion.so/xxxx?v=…)のxxxxの部分がデータベースIDです。

※3

インテグレーションの作成時に取得したシークレットトークンを書き込んでください。

※4

propertiesとNotionデータベースのプロパティが対応しています。propertiesの書き方はこちらを参照してください。

最後に、プロジェクトを保存をクリックしてコードを保存してください。

トリガーの設定

Googleフォームの回答を取得し、送信するプログラムが書けたので、これを自動で実行するようにします。

まず、Apps Scriptの左のサイドバーのトリガーに移動して、トリガーを追加をクリックします。

image block

次に、必要な項目を選択してトリガーを保存します。

image block
📌
選択項目
  1. 実行する関数を選択

    submitForm

  2. 実行するデプロイを選択

    Head

  3. イベントのソースを選択

    フォームから

  4. イベントの種類を選択

    フォーム送信時

以上で工程は終了です!

これでGoogleフォームの質問が回答されると、自動でNotionデータベースにpropartiesで指定した情報が入力されます。

最後に

今回はGoogleフォームの回答をGoogle Apps ScriptとNotion APIを利用してNotionデータベースに追加する方法を紹介しました。

Google Apps Scriptのコードで回答を取り出して、回答データを加工して、Notionデータベースに追加することができます。

個人情報保護などの観点からGoogleフォームの回答をそのままNotionデータベースに追加することができない場合は、今回の方法がおすすめです。

参考