iOSショートカットとGoogleスプレッドシートを使った体重記録アプリの作成

またChatGPT先輩にアプリ作ってもらったので公開します。
記事もほぼ書いてもらいました。

概要

今回は、iPhoneのショートカット機能を使って、日時と体重を入力すると自動的にGoogleスプレッドシートに記録されるアプリを作成する方法をご紹介します。このアプリを使えば、手軽に体重管理ができるようになります。

必要なもの

  • iPhone

  • Googleアカウント

  • Googleスプレッドシート

  • Google Apps Script

  • ショートカットアプリ(iOS)

手順

以下の手順に従ってアプリを作成します。

1. Googleスプレッドシートの準備

  1. Googleスプレッドシートを作成し、適当な名前を付けます(例:「体重管理」)。

  2. シート名は「シート1」とします(デフォルトのままでOKですし、変えてもOKです)。

  3. シートのA列には「日付」、B列には「体重」を記録します。

2. Google Apps Script(GAS)の設定

  1. スプレッドシートの「拡張機能」から「Apps Script」を選択します。

  2. 以下のコードを貼り付けます

function doPost(e) {
  var scriptProperties = PropertiesService.getScriptProperties();
  var spreadsheetId = scriptProperties.getProperty("SPREADSHEET_ID");
  var sheetName = scriptProperties.getProperty("SHEET_NAME");
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);

  try {
    var data = JSON.parse(e.postData.contents);
    var datetime = new Date(data.datetime); // 送信された日時をDateオブジェクトに変換
    var weight = data.weight;

    // mm/dd形式に変換
    var month = ("0" + (datetime.getMonth() + 1)).slice(-2); // 月は0-11の範囲なので+1
    var day = ("0" + datetime.getDate()).slice(-2);
    var formattedDate = month + "/" + day;

    // 日付のフォーマットを確認し、無効な場合は「不明」を設定
    if (isNaN(datetime.getTime())) {
      formattedDate = "不明";
    }

    // A列とB列の最終行を特定し、その次の行を計算
    var lastRowA = sheet.getRange("A:A").getValues().filter(String).length;
    var lastRowB = sheet.getRange("B:B").getValues().filter(String).length;
    var lastRow = Math.max(lastRowA, lastRowB);

    // 次の空行を特定
    while(sheet.getRange(lastRow + 1, 1).getValue() || sheet.getRange(lastRow + 1, 2).getValue()) {
      lastRow++;
    }
    lastRow++;

    sheet.getRange(lastRow, 1).setValue(formattedDate);
    sheet.getRange(lastRow, 2).setValue(weight);

    return ContentService.createTextOutput(JSON.stringify({"result": "success"})).setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    // エラー処理
    return ContentService.createTextOutput(JSON.stringify({"result": "error", "message": error.message})).setMimeType(ContentService.MimeType.JSON);
  }
}
  1. コードを保存し、「デプロイ」→「新しいデプロイ」を選択します。

  1. 「ウェブアプリ」としてデプロイし、誰でもアクセスできるように設定します。

  2. デプロイ後に表示される「ウェブアプリのURL」をメモしておきます。

  3. スクリプトプロパティにスプレッドシートIDとシート名を設定します:

    • スクリプトエディタで「ファイル」→「プロジェクトのプロパティ」→「スクリプトのプロパティ」を選択します。

    • 「スクリプトプロパティ」に以下のキーと値を追加します:

      • SPREADSHEET_ID: {スプレッドシートのURLに記載されているID}

      • SHEET_NAME: {シート名(デフォルトは「シート1」)}

3. iPhoneのショートカットアプリの設定

  1. ショートカットアプリを開き、右上の「+」アイコンをタップして新しいショートカットを作成します。

  2. 「アクションを追加」ボタンをタップし、「入力を要求」を追加します。

    • 「プロンプト」に「体重」と入力、「テキスト」をタップし、メニューから「数字」を選択、右矢印をタップして詳細設定を開き、「小数点以下の数字を許可」をオンに、「負の数字の許可」をオフにします。

    • 「プロンプト」に「日付」と入力、「テキスト」をタップし、メニューから「日付」を選択します。

  3. 「URLの内容を取得」アクションを追加し、以下の設定をします。

    • 「URL」フィールドにGASウェブアプリのURLを入力します。

    • 「方法」を「POST」に設定します。

    • 「本文を要求」を有効にし、JSONを選択して、新規フィールドを以下のように追加します。

      • 型:数字、キー:weight、値:タップして「変数を選択」より、「体重」項目の下の「指定入力」をタップ。

      • 型:テキスト、キー:datetime、値:タップして「変数を選択」より、「日時」項目の下の「指定入力」をタップ。

  4. ショートカットに名前を付けて保存します。

実行

作成したショートカットを実行すると、日付と体重を入力するプロンプトが表示され、それを入力すると指定のGoogleスプレッドシートにデータが追加されます。

終わりに

この方法を使えば、簡単に体重を記録することができます。さらに、自動化を進めることで、他の健康管理やデータ収集も手軽に行えるようになるでしょう。ぜひ試してみてください。

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?