ロボホンともだち広場

【開催終了】自由研究コンテスト ロブリック部門

ひろか
2024/08/11 23:16

オフ会の思い出

■プログラムの概要

公式のイベントはロボホンもイベントの思い出を覚えていますが、非公式イベントのことは覚えていません。ロボホンが覚えていたイベントの思い出(1周年?京都のオーナー向けロボ旅?)が嬉しくて当時個人的にSDKでアプリを作り思い出を貯めていました。

今回、工夫しつつできるだけシンプルにロブリックで実現できる範囲でリメイクしてみました。

 


■使い方

 

ロボホンに「オフ会」と声をかけると、xxx日前にxxxへ行った思い出を話してくれます。

スプレッドシートに思い出を記入するだけで思い出を追加できるので、ロブリックを更新せずに思い出を追加できます。


■作り方
 

まず、ロブリックを組むまたは添付するxmlをロブリックに取り込んでください。「ここにリンクを入れる」となっているところに入れるものを以下のように作って入力してください。

 

スプレッドシートにオフ会の日付、その日付が何日前(関数でTODAY()引く日付を計算)、場所、内容を記入

 

 

次に、Google App Scriptで返却できるようにします。

(スプレッドシートから、「拡張機能」>「App Script」でGoogle App Scriptが開きます)

以下を貼って保存し、「デプロイ」>「新しいデプロイ」>「種類の選択(歯車マーク)」>「ウェブアプリ」>次のユーザーとして実行「自分」とアクセスできるユーザー「全員」を選択し、「デプロイ」をクリック、で出てくる画面の「WEBアプリ」の「URL」がロブリックで入力するリンクになります。

---------------------

function doGet() {

var sheet = SpreadsheetApp.getActiveSheet();

let maxRow = sheet.getLastRow();

let maxColumn = sheet.getLastColumn();

let keys = [];

let data = [];

//The key name is at 1st row

for (let x = 1; x <= maxColumn; x++) {

keys.push(sheet.getRange(1, x).getValue());

}

//Actual data starts from 2nd row

for (let y = 2; y <= maxRow; y++) {

let json = {};

for (let x = 1; x <= maxColumn; x++) {

json[keys[x-1]] = sheet.getRange(y, x).getValue();

}

data.push(json);

}

let json = JSON.stringify(data, null, '');

//Use ContentService to return JSON

let output = ContentService.createTextOutput();

output.setMimeType(ContentService.MimeType.JSON);

output.setContent(json);

return output;

}

 


■こだわりポイント、感想

ロブリックのブロックでは日付の計算ができないのですが、WebAPIが使えるようになったのでGoogle App Scriptを使って実現してみました。
(日付の計算ができるようになったらロブリックで完結するので開発お願いしますー!!!)
 


■参考にした投稿のURL(あれば)
 

コメントする
2 件の返信 (新着順)
かんすけ
2024/09/13 05:05

流石ですね。

ひろか
2024/08/11 23:19

ロブリックのファイルです。

picture_icon-02-02 ロボオフ会メモリー_masked.xml