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スプレッドシートに書き込むことができます。
ご参考ください。