URLをコピーしました!
スキルアップを始める!

【GAS】Notionのデータベースからデータを取得してGoogleスプレッドシートに書き込む(Part2)

GAS(GoogleAppsScript)

Notionのデータベースからデータを取得するためのGoogle Apps Script関数を作ります。前回の続きです。

前回からの続き

前回、Notionのインテグレーション作成や連携を行いました。

function getNotionDatbase() {
  var databaseId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
  var url = 'https://api.notion.com/v1/databases/' + databaseId + '/query';
  var token = "yourtoken";

  var headers = {
    'content-type' : 'application/json; charset=UTF-8',
    'Authorization': 'Bearer ' + token,
    'Notion-Version': '2021-08-16',
  };
  var options ={
    'method': 'post',
    'headers': headers,
  }

  var notionData = UrlFetchApp.fetch(url, options);
  notionData = JSON.parse(notionData );
  Logger.log(notionData);
}

url: Notionのデータベースにクエリを送信するためのURLです。このURLは、databaseId を含んでいます。

headers: HTTPリクエストヘッダーを設定しています。content-type ヘッダーはJSON形式のデータを送信することを示しており、Authorization ヘッダーにはトークンが含まれています。また、Notion-Version ヘッダーにはNotion APIのバージョンが指定されています。

options: HTTPリクエストのオプションを設定します。ここでは、POSTメソッドを使用しています。

UrlFetchApp.fetch(url, options): Google Apps ScriptのUrlFetchAppを使用して、指定されたURLにHTTPリクエストを送信し、データを取得します。

JSON.parse(notion_data): 取得したデータはJSON形式であるため、JSONパースを使用してJavaScriptオブジェクトに変換します。

JSONオブジェクトを取得する

この関数はNotionデータベースから取得したデータをJavaScriptオブジェクトとして返してくれるようになっています。

取得したデータをさらに処理したり表示したりするために、この関数を使用できます。

writeToSpreadsheet関数

このGoogle Apps Scriptの関数は、指定されたNotionデータをGoogleスプレッドシートに書き込むものです。

function writeToSpreadsheet(notionData) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('data');

  // Clear existing data in the sheet
  sheet.clear();

  // Write header row
  sheet.getRange(1, 1).setValue('顧客名');
  sheet.getRange(1, 2).setValue('連絡先');
  sheet.getRange(1, 3).setValue('会社名');
  sheet.getRange(1, 4).setValue('最終連絡日');
  sheet.getRange(1, 5).setValue('重要度');

  // Write data to the sheet
  var results = notionData.results;
  for (var i = 0; i < results.length; i++) {
    var properties = results[i].properties;

    var customerName = properties.顧客名.title[0].text.content;
    var contact = properties.連絡先.email;
    var companyName = properties.会社名.rich_text[0].text.content;
    var lastContactDate = properties.最終連絡日.date.start; // ここでは日付の開始日を取得
    var importance = properties.重要度.rich_text[0].text.content;

    // Write data to the sheet row by row
    sheet.getRange(i + 2, 1).setValue(customerName);
    sheet.getRange(i + 2, 2).setValue(contact);
    sheet.getRange(i + 2, 3).setValue(companyName);
    sheet.getRange(i + 2, 4).setValue(lastContactDate);
    sheet.getRange(i + 2, 5).setValue(importance);
  }
}

既存データのクリア

sheet.clear();

シート内の既存のデータをクリアします。

ヘッダー行の書き込み

  sheet.getRange(1, 1).setValue('顧客名');
  sheet.getRange(1, 2).setValue('連絡先');
  sheet.getRange(1, 3).setValue('会社名');
  sheet.getRange(1, 4).setValue('最終連絡日');
  sheet.getRange(1, 5).setValue('重要度');

スプレッドシートの1行目に、各列のヘッダーを書き込みます。

あとは、Notionデータから取得した結果(notionData.results)を反復処理し、各行のプロパティを取得します。

各プロパティから必要なデータ(顧客名、連絡先など)を抽出します。

スプレッドシートの適切な位置にデータを書き込みます。行インデックスは1から始まるため、i + 2が使用されています。

Notionデータから取得した結果がスプレッドシートに書き込まれました!

まとめ

この関数を使用することで、指定されたNotionデータをGoogleスプレッドシートに書き込むことができます。

ご参考ください。

会員登録するとご利用できます。
Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら