家計簿と聞いてドキッとなる方のための家計簿


家計簿という言葉が出ると、あっ忘れてたとなる人

　Siriを起動して、Siriに話しかけながら基本情報を入力するだけで、スプレッドシートで分析できるようになっているそんな機能あったらなっで作りました。参考にしてみてください。



※YouTube動画です。音量に気をつけてください

[![YouTube動画](https://img.youtube.com/vi/6Wpq653mGUc/hqdefault.jpg)](https://youtube.com/shorts/6Wpq653mGUc?feature=share)


 スプレッドシートの内容↓（月１これで分析）



![スクリーンショット 2024-12-14 13.32.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/fd983ef2-5aee-d3fb-0d35-aaa64ad69136.png)



これだけ！めんどくさがりにはちょうどいいですもちろん、「Hey!Siri、家計簿」で音声のみの入力も可能！




## 💚設定各項目

### --スプレッドシートの設定

項目のみ設定をしておきましょう。グラフは後ほどです。

![スクリーンショット 2024-12-14 13.40.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/4ecb3fcd-6504-8db7-aa8f-b8fbc20d8e0b.png)

### --GAS設定

Google Apps ScriptにGASコードを記載します。


「ここ変更①」→スプレッドシートのIDを載せます。が注意が必要です。
/d/の後ろの〇〇〇をコピー 
```例:https://docs.google.com/spreadsheets/d/〇〇〇/edit#gid=0```

 ```GAS:GAS
 
function doPost(e) {
  var params = JSON.parse(e.postData.getDataAsString());
  var itemData = params.item;
  var person = params.person;
  var price = params.price; 
  // ショートカットに返すメッセージを格納する為の変数
  var result = {};
  var output = ContentService.createTextOutput();
  output.setMimeType(ContentService.MimeType.JSON);

  // 情報が問題なく送られてきてるかの判定
  if (itemData){
    result = {
      "success" : {
        "message" : "スプレッドシートへの記録が完了しました"
      }
    };
    // 情報があればスプレッドシートへ記録する
    addLog( JSON.stringify(itemData), person,price ); // メッセージも追加
  } else {
    result = {
      "error": {
        "message": "データがありません"
      }
    };
  }

  // ショートカットにメッセージを返す
  output.setContent(JSON.stringify(result));
  return output;
}


function addLog(itemDataText, person,price) {
  // 記録するスプレッドシートを指定
  var spreadsheetId = "「ここ変更①」"; // スプレッドシートID（ここ変更）
  var sheetName     = "シート1"; // スプレッドシート名
  var spreadsheet   = SpreadsheetApp.openById(spreadsheetId);
  var sheet         = spreadsheet.getSheetByName(sheetName);
  // 記録する箇所の列幅を指定
  var firstColumnSize  = 150; // １列目の列幅
  var secondColumnSize = 150; // ２列目の列幅
  var thirdColumnSize = 100; // ３列目の列幅
  var fourColumnSize = 100; // 4列目の列幅
  sheet.setColumnWidth(1,firstColumnSize);
  sheet.setColumnWidth(2,secondColumnSize);
  sheet.setColumnWidth(3,thirdColumnSize);
  sheet.setColumnWidth(4,fourColumnSize);

  // ショートカットから送信された情報とメッセージをスプレッドシートに記録
  sheet.appendRow([new Date(), itemDataText,person, price]); // メッセージも追加
  var range = sheet.getDataRange();
  range.setHorizontalAlignment("left");
  // 文字を左揃えに統一
}
 ```



このコードをコピーしてURLを発行するためにデプロイを行います。デプロイ→新しいデプロイ　


![スクリーンショット 2024-12-14 13.46.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/59265821-c0e3-eda8-7cea-f2f616bddbc5.png)

ウェブアプリのURLをコピーしておきます。
![スクリーンショット 2024-12-14 13.47.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/af60f8bb-eac4-0e19-508d-c66aad69f83d.png)
（この画面が出てきたら成功）※SiriにこのURLを記入します。



### --ショートカット設定

あともう少しです。
ショートカット画面の「＋」マークを押して自分で設定します。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/da2da4e6-1076-92a5-77f0-865171319a69.png" width=50%>

このような流れになります。以下のように紐付いて記録されています。黄色＝スプレッドシート紫色＝Siri


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/3c7992ca-8eb0-dd4b-8537-c9b2e648bcc7.png)


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/261e74ef-8b88-f56c-bac0-2d6cc9c0fc7e.png" width=50%>

「テキスト」には、入力者の名前を入れるのがおすすめ（２人で使う場合）「URL」には、GAS作成時、URLコピー※①のURLを載せる

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/9cf66f18-37b2-a3cc-80a0-da92730b55e5.png" width=50%>

URLの内容取得を再度設定

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/765ea42f-5250-8fdc-225d-2eaeff67acf7.png" width=50%>


GASのここの内容と紐付いています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636287/dc475262-0b9f-b066-0f85-e7339d30b98f.png)


## 💙最後に

動作確認し、データが集まったらスプレッドシートにグラフ作成してみてください。めんどくさがりは、めんどくさいなりに現代に感謝して共に文明の力で乗り越えましょう🥰

見ていただき、ありがとうございます😍