# 「空き人」診断ツール
## input/output
input: 4段階のアンケート
output: レーダーチャート
## プログラム構成
- SPA(single page app)
- 設問DB
- Googleスプレッドシートで管理できればGood
- 公開方法
- github pageesで公開する
- netlifyいいかも
- WodrPressの固定ページに埋め込む
- LINE chatbot検討
- Nuxt.js
- chart.js
## 軸をどうするか
現在考えられているのは
- 時間がある【ゆとり】
- 体力【健康】
- お金【経済】
- コミュニケーション【人】
- 判断【精神】
- 情報
※コンテンツ作成参考資料
https://www.amazon.co.jp/dp/B08MTM65TT/ref=cm_sw_r_tw_dp_x_nO11FbG1PPB1M
https://www.doubutsu-uranai.com/
## 今後の流れ
1. 12/17 CTS Meetup 空き人作戦会議@zoom
2. 12/22 空き人Vol3
「空き人(メインで発表)」「路上イベントマップ」「ひまアプリ」
4. 12/24 おじさんあるある
5. . 12/28 のら街歩き
6. . まずは、各軸は独立として、アンケート答えてレーダーチャート表示するまでは作成する 太田
7. . アンケート100件集める(1回目のデータ収集) 史織
8. . コンテンツ制作 6軸に対するコメント作成 桑
(12月はここまで)
(1月から)
1. 設問が複数の軸に絡む場合も考える
1. 軸とは違うパラメータを設定することになるかも
1. 設問増やす、軸も検討
2. シルバー人材センター、りとらいふ窓口、未来大学でテスト運用(WEB、紙、両用判断)(2回目のデータ収集)
(1月UDC最終応募はこのくらいかな)
6. ユーザー認証いれて、過去の履歴を把握(ここまで来るとDB含めシステム再検討かな)
7. いっそLINEアプリにできないか(chatbot)
-
ストーリー
0. 埼玉県、さいたま市の高齢化について
1. 『ホンネ会議』2019年8月 シニア男性の活用について
2. 毎月「学習会」シニア男性の活用について検討
3. アイデアがでた「SHOW&TELL」「空き人アイデアソン」「おじさん受け入れマニュアル」「ひまマッチングアプリ」
4. 『ホンネ会議』の実施 8/10
5. 空き人 アイデアソンの実施 10月~12月
6. 空き人診断アプリ
7. シルバー人材センター、りとらいふ窓口(高齢福祉課)、未来大学(埼玉県いきいき財団)との連携
## 技術面
### SpreadSheet
以下3つできれば文句なし
他で応用きく
1. アンケート項目を取得
- できればjsonで->OK
1. アンケート結果を記入
1. アンケート結果の平均値とかを取得
### GAS(Google Apps Script)について
- スプレッドシートのツール>スクリプトエディタから
- 取得系はdoGet()
- 更新系はdoPost()
- それぞれ一つのスプシに1個ずつらしい
- パラメータで細かく分ける事もできそうだが
- 一回Getして一回Postするくらいに設計したほうが良さげ
- JSON形式で返せる
### GASでとりあえず書いた
- 使用したスプレッドシートは
- https://docs.google.com/spreadsheets/d/1Ws6PabuiaDpsafy83i4wnHezEW7TWKu3TUzQSpyx3IM/edit?usp=sharing
- 動作確認にせよひどい書き方ではある
```javascript=
// 結果を投稿する
function doPost(e) {
var params = JSON.parse(e.postData.getDataAsString());
// 投稿するパラメータは
var name = params.name; // 名前
var age = params.age; // 年齢
var sex = params.sex; // 性別
// 以降は各軸の数値
var axis1 = params.axis1;
var axis2 = params.axis2;
var axis3 = params.axis3;
var axis4 = params.axis4;
var axis5 = params.axis5;
var axis6 = params.axis6;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("answer");
var sheetData = [name, age, sex, axis1, axis2, axis3, axis4, axis5, axis6]
sheet.appendRow(sheetData)
// レスポンスの定義
var response = {
sheet: sheetData,
meta: { status: 'success' }
};
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
// 最初にアンケート項目とレーダーチャート用に今までの平均値持ってくる
function doGet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// アンケート項目持ってくる
var sheet = ss.getSheetByName('enquete');
var sheetData = sheet.getRange('A2:C' + sheet.getLastRow()).getValues();
// データの成形
var responseList = [];
sheetData.map(function (d) {
responseList.push({ id: d[0], axis: d[1], enquete: d[2] });
});
// 回答項目持ってくる
var answer = ss.getSheetByName('answer');
var answerData = answer.getRange('A2:I' + sheet.getLastRow()).getValues();
var count = 0; // 項目数カウンター
// 以下は合計入れる変数
var axis1 = 0;
var axis2 = 0;
var axis3 = 0;
var axis4 = 0;
var axis5 = 0;
var axis6 = 0;
// ループ処理で合計出す
answerData.forEach(function (d) {
if (d[0]) {
axis1 += parseFloat(d[3]);
axis2 += parseFloat(d[4]);
axis3 += parseFloat(d[5]);
axis4 += parseFloat(d[6]);
axis5 += parseFloat(d[7]);
axis6 += parseFloat(d[8]);
count++;
}
});
// レスポンスは回答の平均とアンケート項目と成功フラグ
var response = {
average: [
axis1/count,
axis2/count,
axis3/count,
axis4/count,
axis5/count,
axis6/count,
],
enquete: responseList,
meta: { status: 'success' }
};
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}
```
- 結果の例(GET)
- doGet()で返ってくる内容
- https://script.google.com/macros/s/AKfycbyh37wIFctpfKQisDew1lLBwt-UB7nVMQL2qY0qL-XDEImlI-4IbXYH4g/exec
- URLはデプロイ時に変わることがあります
```json=
{
average: [
1.8888888888888888,
2.6666666666666665,
2.6666666666666665,
2.7777777777777777,
2.888888888888889,
3.111111111111111
],
enquete: [
{
id: 1,
axis: 1,
enquete: "Q1"
},
{
id: 2,
axis: 1,
enquete: "Q2"
},
{
id: 3,
axis: 2,
enquete: "Q3"
},
{
id: 4,
axis: 2,
enquete: "Q4"
},
{
id: 5,
axis: 3,
enquete: "Q5"
},
{
id: 6,
axis: 3,
enquete: "Q6"
},
{
id: 7,
axis: 4,
enquete: "Q7"
},
{
id: 8,
axis: 4,
enquete: "Q8"
},
{
id: 9,
axis: 5,
enquete: "Q9"
},
{
id: 10,
axis: 5,
enquete: "Q10"
},
{
id: 11,
axis: 6,
enquete: "Q11"
},
{
id: 12,
axis: 6,
enquete: "Q12"
}
],
meta: {
status: "success"
}
}```
```