loader image

NotionとSlackを活用した究極のタスク管理術

NotionSlack連携ブログアイキャッチ

NotionとSlackを組み合わせて、究極のタスク管理体験を実現します。この強力な組み合わせにより、プロジェクトの効率と生産性が格段に向上します。

成果物

このように指定した時間にNotionに登録されているタスクが自動で送られてきます。

以下のコードをGoogle Apps Scriptに貼り付けてご利用ください。なお、WebhookおよびNotion API、Notionデータベースの設定はコメントアウト(//が書かれている部分)に従ってご変更ください。

var SLACK_WEBHOOK_URL = 'slackに追加したWebhookよりWebhook URLを挿入'; //WebhookURLの取得はSTEP1

//Notion上のタスクをスプレッドシートに同期させる関数(定期的に起動する)
function syncNotionDatabaseToSpreadsheet() {
  const notionApiKey = 'NotionAPIKeyを挿入'; //NotionAPIKeyを挿入(STEP2)
  const databaseId = ' NotionデータベースのIDを挿入'; //タスクを登録しているNotionデータベースのIDの挿入(STEP3)
  const url = 'https://api.notion.com/v1/databases/' + databaseId + '/query';
  const headers = {
    'Authorization': 'Bearer ' + notionApiKey,
    'Notion-Version': '2022-06-28',
    'Content-Type': 'application/json'
  };
  const options = {
    'method': 'post',
    'headers': headers,
  };

  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText());
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName("インポート");
  const existingIds = sheet.getRange(1, 1, sheet.getLastRow()).getValues().flat();

  data.results.forEach((result) => {
    let taskname = "TODOデータベースのタスク名のプロパティ名に置き換え"; //タスクデータベースのTitle(見出し)の名前を登録してください(STEP4)
    let datename = "TODOデータベースの期限のプロパティ名に置き換え"; //タスクデータベースの期限を登録しているプロパティの名前を入れてください(STEP4)
    const id = result.id;
    const name = result.properties.taskname.title[0]?.plain_text || "";
    const status = result.properties.status.status.name;
    let formattedDate = "";

    if (result.properties.datename && result.properties.datename.date) {
      const date = new Date(result.properties.datename.date.start);
      formattedDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
    }

    const rowIndex = existingIds.indexOf(id) + 1;

    if (rowIndex > 0) {
      sheet.getRange(rowIndex, 2).setValue(name);
      sheet.getRange(rowIndex, 3).setValue(status);
      sheet.getRange(rowIndex, 4).setValue(formattedDate);
      sheet.getRange(rowIndex, 5).setValue()
    } else {
      sheet.appendRow([id, name, status, formattedDate]);
      existingIds.push(id);
    }
  });
}

//当日期限のタスク一覧の送信処理に使用する関数
function sendTodaysTasksToSlack() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName("当日判定"); //雛形のスプレッドシートの「当日判定」シートの名称を変更する場合はこちらも変更
  const lastRow = sheet.getLastRow();
  
  // シートからページIDとタスク名を取得
  const pageIds = sheet.getRange(2, 1, lastRow - 1).getValues().flat();
  const tasks = sheet.getRange(2, 2, lastRow - 1).getValues().flat();
  const status = sheet.getRange(2,3 ,lastRow - 1).getValues().flat();
  
  // ページIDを基にNotionページのURLを動的に生成し、それとタスク名を組み合わせる
  let combinedTasks = [];
  for (let i = 0; i < pageIds.length; i++) {
    if (pageIds[i] && pageIds[i] !== "#N/A") {
      const notionUrl = `https://www.notion.so/nishiyuki0501/${pageIds[i].replace(/-/g, '')}`;
      combinedTasks.push(tasks[i]);
      combinedTasks.push(status[i]);
      combinedTasks.push(notionUrl);
      
    }
  }

  if (combinedTasks.length > 0) {
    sendTasksToSlack(combinedTasks);
  } else {
    sendTasksToSlack(["本日のタスクはNotion上には登録されていません。"]);
  }
}

//当日完了したタスク一覧の送信処理に使用する関数
function sendTodaysTasksToSlack_done() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName("実績判定"); //雛形のスプレッドシートの「実績判定」シートの名称を変更する場合はこちらも変更
  const lastRow = sheet.getLastRow();
  
  // シートからページIDとタスク名を取得
  const pageIds = sheet.getRange(2, 1, lastRow - 1).getValues().flat();
  const tasks = sheet.getRange(2, 2, lastRow - 1).getValues().flat();
  
  
  // ページIDを基にNotionページのURLを動的に生成し、それとタスク名を組み合わせる
  let combinedTasks = [];
  for (let i = 0; i < pageIds.length; i++) {
    if (pageIds[i] && pageIds[i] !== "#N/A") {
      const notionUrl = `https://www.notion.so/nishiyuki0501/${pageIds[i].replace(/-/g, '')}`;
      combinedTasks.push6(tasks[i]);
      combinedTasks.push(notionUrl);
    }
  }

  if (combinedTasks.length > 0) {
    sendTasksToSlack_done(combinedTasks);
  } else {
    sendTasksToSlack_done(["本日のタスクはNotion上には登録されていません。"]);
  }
}

//sendTodaysTasksToSlack関数の送信処理
function sendTasksToSlack(tasks) {
  const today = new Date();
const formattedDate = `${today.getFullYear()}年${String(today.getMonth() + 1).padStart(2, '0')}月${String(today.getDate()).padStart(2, '0')}日`;
var payload = {
    text: '*' + formattedDate + 'のタスク一覧:*' + '\n' + tasks.join('\n' ) 
};

  var options = {
    method: 'POST',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);

}

//sendTodaysTasksToSlack_done関数の送信処理
function sendTasksToSlack_done(tasks) {
  const today = new Date();
const formattedDate = `${today.getFullYear()}年${String(today.getMonth() + 1).padStart(2, '0')}月${String(today.getDate()).padStart(2, '0')}日`;
var payload = {
    text: '*' + formattedDate + 'の完了タスク一覧:*' + '\n' + tasks.join('\n')
};


  var options = {
    method: 'POST',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);

}

各ツールのご紹介

まず、最初にNotionとslackの紹介をします。弊社でも大変お世話になっているツールで、この組み合わせで管理されている方も多いかと思いますので、導入されていない方はまずこちらからご覧ください。

Notionでのタスク管理

Notionは柔軟なタスク管理とプロジェクト計画のための多機能プラットフォームです。タスクのリスト化、進捗の追跡、期限の設定が一箇所で管理でき、独自の管理システムの構築も可能になります。

Slackでのコミュニケーション最適化

Slackは、チームコミュニケーションを効率化し、プロジェクト関連情報の共有を迅速化します。Notionで管理されているタスクの更新情報をSlackでリアルタイムに共有することで、情報の透明性が向上し、チームワークが促進されます。

NotionとSlackの統合

NotionとSlackを統合することで、タスク管理の自動化が実現します。Notionでのタスク更新時にSlackに自動通知が送られ、プロジェクトの進捗状況をチーム全体でリアルタイムに共有できます。これにより、プロジェクトの効率性が大幅に向上し、タスクの見逃しや遅延を防ぎます。

各設定項目の説明

STEP1 Webhook URLの取得

  1. slack画面からインストールアプリ画面を開く
  2. ブラウザの右上の検索窓に「webhook」と入力して、「Incoming Webhook」を選択して、アプリを追加する

STEP2 NotionAPIの取得

  1. Notion APIの公式ページに移動してください。(https://developers.notion.com/
  2. 右上のMy Integrationを押します。
  3. ご自身がわかるようなインテグレーションの名前を入力して下の写真のようになるように選択してsubmitボタンを押してください。(基本触らなくて良いはずです)
  4. Secretsのトークンキーをコピーしてください。最初のコードにコピペして使います。

STEP3 NotionデータベースのIDの取得

  • 自身のNotionページを開きます。(ブラウザ版を奨励します)
  • データ元(slackに共有したいデータが集まっているデータベース)を開きます。開くときはデータベース右上にある最大化ボタンを押してください。
  • データベースのフルページを開くと、右上の3点から連携(connection)を選択してください。こちらから先ほどのステップで追加したAPIをこのページと繋いでいきます。
  • 3点ボタンを押して、下部にある連携(connection)の中にある先ほどのステップ2で発行したNotion APIの名前を選択してください。
  • 最後にデータベースのIDを探します。リンクは以下の構成になっています。ワークスペースの部分の文字列をコピーしてください。後ほど最初のコードに埋め込みます。
    ※もしもアプリ版(パソコンソフト版)を使っている場合は⌘+Lでそのページのリンクをコピーできるのでテキストエディタなどに貼り付けて上記の文字列を探してみてください。

リンクの構成)

https://notion.so/[ワークスペースのリンク]/[データベースID]?v=[viewのリンク]

STEP4 Notionデータベースのプロパティ名の確認

  1. タスク名および期日として利用しているdateプロパティのそれぞれの名前を確認します。
  2. 最初のコードのSTEP4の部分におきかえます。(ダブルコーテーション(“)は残してテキストのみ変更してください)

STEP5 コードに反映されていく

  1. Google Apps Script(以下、GASと表記)の公式ページを開きます。(https://script.google.com/home
  2. (初めての方はログインします)
  3. エディタを開いたら、最初のコードを全てコピペしてください。最初のfunction(){}も消して、全て置き換えます。
  4. 保存して、実行を押すと権限確認が必要というポップアップが表示されるので「権限を確認」を押してください。
  5. Googleでログインすると「このアプリはGoogleに接続されていません」と出てくるので左下の「詳細」を押してください。
  6. 「詳細」を押すと「安全でないページへ移動」と出てくるので押してください。
    ※外部サービスとの連携により、情報漏洩などのリスクがあるという意味で接続には注意してくださいという意味です。
  7. 外部サービスとの接続を許可してください。(GASでプロジェクトを初めて動かすときは毎回この作業が必須になります。)

実際に動かした通知

実際に動かしてみるとslackの指定したチャンネルにその日期限(またはその日期限の完了タスク)が共有されます。

タスクとそのNotionページのURLが表示されます

通知のタイミングはGASのトリガーを用いて指定の時間にチェックするなどすれば完全に自動で送られるようになります。

結論

NotionとSlackの統合により、タスク管理はより効率的かつ効果的になります。この強力なツールの組み合わせを活用することで、チームの生産性を最大化し、プロジェクトを成功に導くことができます。

WANTOのβ版検証を開始

お世話になっております。

WANTOは2023年12月から2024年2月22日までα版の検証を行なって参りました。ご協力いただきました皆様ありがとうございました。

WANTOでは、2月末から現在にかけて、α版の検証を踏まえた改善を行なって参りました。

本日より、β版のご利用を開始いたしますので、ご意見やご指摘等頂戴いただけますと幸いです。

引き続き、WANTOをよろしくお願い致します。

大分県ビジネスアイデア実現プログラムGEARが終了

WANTOは大分県のプログラム「大分ビジネスアイデア実現プログラムGEAR」に昨年9月から採択おりました。今月末で全プログラムが終了いたしました。

本プログラムを通して、約50名ほどのアプリユーザーにご協力いただき、検証を進めることができました。

今後は次回の検証に向けた準備に取り掛かりますので、何卒よろしくお願いいたします。

報告書作成を劇的に速くする!GoogleスプレッドシートデータをGoogleドキュメントに自動挿入

Googleスプシからドキュメントに自動転記

はじめに

記事をご覧いただきありがとうございます。私はノーコードでのアプリ開発やNotion、GASを用いた効率化を行っています。

この記事ではスプレッドシートでまとめたデータ一覧を1行改行を入れてドキュメントに列挙してコピペします。完成形として、スプシで作ったデータを報告書に転記することができます。

基本は以下のコードをコピペすることで可能ですので、ご活用ください。

前提条件

このスクリプトを使用するには、GoogleスプレッドシートとGoogleドキュメントにアクセスできるGoogleアカウントが必要です。また、Google Apps Scriptの基本的な知識があると、このガイドをより容易に理解できます。

スクリプトの概要

このスクリプトは、特定のスプレッドシートの列にあるテキストデータを取得し、新しいGoogleドキュメントにテキストとして挿入します。この例では、’G’列のデータを取得し、それを「ユーザーインタビュー報告書」という名前の新しいドキュメントに挿入します。

ステップ 1: スプレッドシートの準備

ユーザーインタビューのデータを含むスプレッドシートを用意します。データは’G’列に配置してください。列はカスタマイズ可能ですが、このガイドでは’G’列を使用します。

スプシでデータを上記のようにまとめる

ステップ 2: スクリプトエディタの開始

  1. スプレッドシートを開きます。
  2. メニューから「拡張機能」>「Apps Script」を選択します。
GAS起動画面
メニューバーの拡張機能>Apps ScriptよりGASエディタを起動

ステップ 3: スクリプトの記述

Apps Scriptエディタに以下のスクリプトをコピー&ペーストします。

function exportInterviewDataToDoc() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var column = sheet.getRange('G:G').getValues();//G列のデータを上から順に列挙していきます
  var doc = DocumentApp.create('ユーザーインタビュー報告書');
  var body = doc.getBody();
  
  var text = '';
  for (var i = 0; i < column.length; i++) {
    if (column[i][0] !== '') {
      text += column[i][0] + '\n\n';
    }
  }
  
  body.appendParagraph(text);
}

ステップ 4: スクリプトの実行

  • エディタ上で、上記の関数exportInterviewDataToDocを選択し、実行ボタン(▶︎)をクリックします。
  • 初回実行時には、Googleによる認証が必要になります。

ステップ 5: 結果の確認

スクリプト実行後、Googleドキュメントに「ユーザーインタビュー報告書」という新しいドキュメントが作成されていることを確認します。このドキュメントには、スプレッドシートの’G’列にあったテキストデータが挿入されています。

スプレッドシートのデータ一覧がドキュメント内に列挙されます。

まとめ

この方法を用いれば、スプレッドシートのデータを簡単にドキュメントに転記し、整理・共有することができます。さらに、今回はA列からF列の内容をG列にまとめて表示するように関数を挿入しています。このように関数も併用することで、レポート作成やデータの文書化が効率的に行えるようになります。自動化スクリプトのカスタマイズにより、さまざまなニーズに応じた報告書作成プロセスを構築することが可能です。

【bubble】Reload on updateでリロードを効率化する

ノーコードツールbubbleではドラック&ドロップをベースとした簡単な操作でアプリを作っていくことが可能です。その一方で、要素を移動させるなどの修正を加えるとプレビューモードのリロード(再読み込み)が必要になります。

アプリの更新をするたびにプレビューの更新を行うことは意外と手間がかかる作業です。

この記事では変更が行われたときにプレビュー画面のリロードを自動で行うプラグインをご紹介します。

Reload on updateの詳細

Reload on updatemのプラグイン紹介画面

アプリの修正を加えるたびにプレビュー画面のリロードを行うためには「Reload on update」というプラグインを使います。

必要な設定は

  1. プラグインのインストール
  2. ワークロードの設定

の二つが必要です。これから一つずつ紹介していきます。

プラグインのインストール

プラグインの設定画面>右上の「Add plugin」を選択して、プラグインを検索します。

左上の検索ボックスに「Reload on update」と入力すると以下のプラグインが表示されます。

プラグインのボックス右下にある「Install」をタップすると開発中のプロジェクトにインストールが完了です。

WANTO Reload説明画像
プラグインのインストーラーページの画面

ワークフローの設定

次にページ更新時に自動でリロードが行われるようにワークフローを設定していきます。

ワークフローページを開き、新規ワークフローを作成します。点線で囲まれた「Click here to add an event…」をタップしてください。その中からGeneral>>Page is loadedを選択してください。

これでワークフローのトリガーが「ページが更新されたときに中に設定された動きを開始する」となります。

WANTO Reload説明画像
ワークフローのトリガー設定

このワークフローブロックの中に具体的な動きを設定していきます。今回の場合は「Reload on undapte」のプラグインの内容を動かすことを設定します。

先ほど作成した「Page is loaded」をクリックすると下に「Click here to add an action…」と出現します。こちらをタップしてPlugins>>Auto reload page on updateを選択してください。

ワークフローの設定を追加する
Pluginsの中からAuto reload page on updateを選択する

設定は以上で完了です。これでアプリの編集が行われたときに自動でプレビューのリロードが行われ、毎度再読み込みする必要がなくなります。

注意

こちらはページ単位での設定となります。そのため、一つのページに設定したとしても他のページには適応されませんのでご注意ください。

最後に

bubbleでの開発規模が大きくなればなるほどリロードの手間を感じてきます。Reload on updateを使うことでストレスフリーな開発環境を構築してみてください。

bubbleでの開発や技術的なご相談等はHPのお問い合わせまたはX(旧Twitter)のDMにてお気軽にご相談くださいませ。

大分県ビジネスアイデア実現支援プログラム「GEAR」が始まりました

WANTO GEAR開始

先日、9月4日に大分県ビジネスアイデア実現支援プログラム「GEAR」のキックオフイベントがありました。イベントにて、事業内容の説明やプログラムゴールの発表等させていただきました。

このプログラムを通じて、教室運営を10倍効率化するアプリWANTOの市場検証を本格的にスタートさせて参ります。

アプリについての詳細はこちらからご確認いただけます。ご質問やご不明点等ございましたら、お気軽にお問合せフォームからご連絡下さい。

【bubble】独自ドメインをお名前.comから取得・反映させる

WANTO 独自ドメイン取得記事

ノーコードツールbubbleでは有料プランに切り替えると独自ドメイン(本サイトのed-wanto.comにあたるもの)の設定が可能になります。

独自ドメインを取得することにより、bubbleで自動的に設定されるドメインに縛られずに設定できます。

本記事では独自ドメインを取得するサイト「お名前.com」から取得してbubbleアプリに反映する手順を紹介します。

bubbleの事前設定(前提要件)

bubbleで開発したアプリに独自ドメインを設定するためには有料プラン(Starterプラン以上)にしておく必要があります。ご注意ください。

https://bubble.io/pricing より引用

ドメインを取得する

お名前.comで空き状況を検索する

本章ではお名前.comから独自ドメインを取得する手順について紹介します。

まず、お名前.comのサイトに移ります。こちらの「取得希望の文字列を入力」の部分に希望の文字列を入力してください。

取得希望の文字列にはサードレベルドメイン(セカンドレベルドメイン)と呼ばれる部分の文字列となります。

補足)ドメインの構成について

本記事のドメインを例にして説明します。

【.com】=この部分はトップレベルドメイン と呼ばれています。

【ed-wanto】=この部分はセカンドレベルドメインと呼ばれています。

※co.jpのような三つに区切られている場合は右から「トップレベルドメイン」「セカンドレベルドメイン」「サードレベルドメイン」と表されます。

文字列を入力して検索をすると各ドメインの空き状況が表示されます。取得可能なドメインを選択すると画面右部に料金の確認ボタンが表示されます。

ドメイン一覧の表はこのように表示されます
取得したいドメインを選択すると赤色部分に表示されます

※ドメイン取得一覧の表にはアイコンの種類がいつくかありますが、その意味は以下の通りです。

WANTO ドメイン取得アイコン説明
ドメイン表のアイコン説明

ドメインの契約をする

選択したドメインの料金確認に進むとレンタルサーバーの契約の有無についての案内が表示されます。WordPressなどのレンタルサーバー下に構築するシステムや独自ドメインを用いたメールアドレスを使用する場合のみ契約が必要です。bubbleのみの利用の場合は「利用しないで進む」を選択してください。

お名前IDを作成(またはログイン)して、支払い方法を入力、申し込みを行えば完了となります。

お名前.comの支払い画面

bubbleに独自ドメインを接続する

bubble側の設定とお名前.com側の設定があるため、分けて紹介していきます。

bubble側の設定

本記事の最初にご紹介したようにbubbleのプランを有料に切り替えておく必要があります。

本記事では有料プランに切り替えたことを全体にして進めていきます。

右下の「Settings」>「Domain / email」を開いてください。先ほど取得したドメイン名を「Domain name」に入力していきます(ed-wanto.comのような形です。)。入力が終わると「Set up this domain」を選択してください。

ドメイン名の入力画面

ドメイン名を入力すると設定に必要なDNSレコードと呼ばれるアドレスが表示されます。これからこのアドレスをお名前.comの設定画面に登録していく作業に入ります。

ドメイン名を入力後の画面

お名前.com側の設定

お名前.com側にはbubbleに表示されたアドレスを入力していきます。まず、お名前.comにログインして取得したドメインの管理画面に進みます。お名前.comのメニューバーの「ネームサーバーの設定」から「ドメインのDNS設定」を選択してください。

お名前.comのメニューバーからネームサーバーの設定>ドメインのDNS設定

該当のドメインを選択して、DNS設定の一覧から「DNSレコード設定を利用する」の「設定する」を押してください。

DNSレコード設定を利用するの「設定する」を選択

設定画面を下にスクロールしていくと以下のような追加エリアが出現します。こちらにbubbleの設定で表示されたアドレス4つを一つずつ入力していきます。ホスト名は空欄で構いません。入力後に「追加」を押して順に登録してください。

DNSレコードの追加エリアの画像

登録が完了すると下の登録済み一覧に以下のように表示されているはずです。先ほど追加した4つが表示されていれば問題ありません。

DNSレコードの登録一覧画面

あとはbubble側の「Settings」>「Domain / email」からドメイン登録画面を開き、「Check my settings」をクリックして接続を確認します。

なお、こちらの接続は最大24時間要するため、設定が反映されていないときは一度時間を置いてから再度確認してください。

bubble側の設定のチェック

最後に

独自ドメインを取得することで信用につながることやbubble以外のツールに移行した時にもアドレスが変わらずにユーザーに別のリンクを知らせる必要がなくなるなど様々なメリットがあります。ぜひ、独自ドメインを取得したい方々はこちらの記事を参考にしてみてください。

bubbleでの開発や技術的なご相談等はHPのお問い合わせまたはX(旧Twitter)のDMにてお気軽にご相談くださいませ。

【bubble】ワークロードが超えたときの対応

WANTO bubble受託 ワークロード

bubbleでプロダクト開発を行っておりますWANTOの西坂優希(@nishiyuki0501)と申します。

2023年5月からbubbleの有料プランの料金形態が変わりました。その変更では料金が上がっただけでなく、利用量を計測する「ワークロード(workload)」というものが導入されました。

この記事ではワークロードが超えた時の対処法をご紹介します。

ワークロードとは

ワークロード(workload)とは「アプリの利用量」を計測する指標です。プランごとにデフォルトで最大の利用量分のクレジットを与えられます。基本料金でアプリを動かせるアクセス数がこれにより大まかに決められております。

bubble公式ページより引用
日本語)
ワークロードはbubbleで開発したアプリケーションを動かすための一つの指標となるものです。アプリが支払い処理、API との通信、データベースの検索などのタスクを実行するよう要求されるたびに、毎月のワークロード使用量に計測されていきます。

ワークロードが超えた時の対処法

ワークロードが超えた場合はまず、以下の二つに大きく分けることができます。

  1. アプリの利用を制限する
  2. 利用量は制限せずに超過分を別途支払う

上記の設定はこちらから

アプリの制限をする

アプリの利用を制限する場合はSetting>>App plan>>Overagesの設定を開きます。選択項目を「Disable overages」に設定することでワークロードが超過した地点でアプリへのアクセスができなくなります。

メリット)

  • 月額利用料を基本料金内で抑えることができる

デメリット)

  • アプリ利用者が急に使えなくなる可能性がある

超過分を後払いで支払う

アプリの制限画面から超過時もアプリの利用を制限することなく利用ができるように設定します(一つ目の設定項目を「Enable overages」に設定)。これにより、デフォルトで付与されているワークロードを超えた際にも制限なく、提供できるようになります。

メリット)

  • 従来のbubbleの設定では利用量が増えると自動的にアクセス制限がかかっていたため、アクセス制限がかからなくなった
  • 後払いのため、設定一つで制限をかけずに利用者に提供できる

デメリット)

  • 超過分の料金が使った分だけとなるため、請求額が毎月変動する
  • 事前購入(三つ目)よりも1000ワークロードあたりの料金が高めに設定されている
後払いの場合は1000ワークロードあたり0.3ドル

超過分に充当できるクレジットを事前に購入する

ワークロードが超過した際に充当できるクレジットを事前に購入しておくことができます。こちらは月額課金制になっており、毎月充当する量をプランから選択します。設定はSetting>>App plan>>「Workload tier」の設定を開きます。

workload tierの料金プラン

メリット)

  • 超過分の後払いよりも安価にワークロードを足すことができる
  • 事前に購入するため、毎月の金額が変動しにくい

デメリット)

  • ワークロード数を細かく指定して足すことができない
  • 事前にどれくらいのワークロードを使うか測定することが難しい

最後に

ワークロードの計算は今年の5月から導入されたということもあり、bubbleエンジニアの中でもまだ目安を立てるのが難しいものとなっております。個人的には一日あたりの利用量を測定することや超過分を後払いに最初設定して次月から事前購入にするなどの方法でお試しすることをお勧めしています。

bubbleでの開発や技術的なご相談等はHPのお問い合わせまたはX(旧Twitter)のDMにてお気軽にご相談くださいませ。

【bubble】データベースのフィールドタイプを解説

WANTO データ型記事サムネイル

この記事は、Bubbleでのデータベース管理について初級から中級者に向けて解説します。データベースを構築する際にはデータの型を設定しますが、どの型がどういったものなのか理解することは意外と難しいです。この記事ではデータ型の特徴から実際の用途についても例を挙げながら紹介していきます。

データ型の一覧

  • text:文字列。テキストを表すために使用されます。
  • number:数字。整数から小数まで数字として扱う際に使用されます。
  • number range:数字の範囲。最小と最大を指定することができます。
  • date:日付。年、月、日、時間、分、秒の全ての時間を扱う時に使用します。
  • date range:日の範囲。
  • date interval:間隔。単位は秒になっているので「何秒間隔」を表す時に使用します。
  • yes / no:2択のフラグ。二つの状態を管理する時に使用します。二つの状態(完了と未完了など)の管理の際に使われることが多いです。
  • file:ファイル全般。画像や動画からPDF、csv形式のファイルなどをアップロードする時に使用します。
  • image:画像。pngやjpegなどの画像形式のファイルをアップロードする時に使用します。
  • geographic address:住所。土地の住所を登録する際に使用します。Google APIとの連携をすることで郵便番号と住所を登録できます。
データベースのfield

データ型別の説明

text型

文字列を登録する場合に用いるものです。

使用例

・ひらがな、カタカナ、漢字、アルファベットで構成される文字列を表示
・IDを作る(数字型の場合、最初の数字が0になると自動的に省略させるため)

number型

数字として使うデータを登録する場合に用いるものです。四則計算が必要になるものはこのかたで登録します。

使用例

・お金の計算をするとき
・投稿数を数えてデータとして保存する
・ある地点からの距離データを保存するとき

number range型

数字の範囲を登録する場合に用います。最大値と最小値を登録することができるため、そこから中央値を求めたりすることができます。

使用例

・ユーザーの年齢管理のデータベースを構築して、最小と最大、平均などを計算する
・データベースに最大値と最小値を事前に登録しておき、その範囲内に該当するか検索する

date型

日付を登録するときに用いるものです。

使用例

・公開日データの設定
・誕生日の登録

date range型

日付の範囲を登録する場合に用います。開始と終了の範囲を登録する形になります。データを作る際には「”開始範囲のデータ”<>”終了範囲のデータ”」という型に合わせてデータ作成の型を設定します。

使用例

・カレンダー表示のためのデータを登録する
・公開日範囲の設定
「contains range 開始<-range->終了」で該当するデータを検索する

date interval型

日付間隔を登録するときに用います。日付間隔は2つの日付の差を数値化する。その間の日数/時間/分/その他を表します。

使用例

・開始と終了の時間の差分を日数/時間/分などの指定の型で登録する

yes / no型

ステータス管理に用います。2択で分類したいときに使用していきます。これによって「conditional」という条件分岐の設定から表示を条件分岐することが可能になるなどします。

使用例

・タスクの完了や未完了
・メール配信の受信設定

file型

ファイルデータ全般を保存するときに用います。

使用例

・PDFファイルを保存する
・CSVファイル(Excel形式のファイル)を保存する

image型

画像データを用いるときに用います。PNGやJEPGなどの画像形式でのファイルのみを登録できます。

使用例

・プロフィール画像を保存する
・スマホで写真を撮って保存する
WANTO 画像とファイルスクショ
画像の場合は「Picture Uploader」
ファイル全般は「File Uploader」

geographic型

土地の住所を登録するときに用います。Google Map APIとの連携により、Google上の住所データを用いて登録することができます。

使用例

・出発地と到着地の住所を保存する
・現在地からデータベース上に登録されている住所の距離を算出する
Google APIの設定は設定のGeneralから

最後に

アプリケーションを作る際に必ず必要になるデータの管理について、基本的なデータの型についてご紹介しました。

bubbleでの開発や技術的なご相談等はHPのお問い合わせまたはX(旧Twitter)のDMにてお気軽にご相談くださいませ。