#【はじめに】
GAS(Google Apps Script)を使って、NeosVR内から
Googleのスプレッドシート(Google版エクセルみたいなもの)の
値の読み込みと書き込みを実施する方法を説明します。
これができるようになると、例えば
NeosVR内で作ったゲームのランキング表作成や挑戦数、クリア数の管理などに
応用することができます。
#【手順】
①GoogleのスプレッドシートとGASの使い方を理解する
以下リンク先ページの説明がとても分かりやすいので、
スプレッドシートへの書き込みまでやってみてください。
「GASをWebAppとして公開して初回実行(doPostとdoGet)」
https://uncle-atsushi.com/gas_first-execute_dopost-doget/
※説明は旧ページのものになるので、
Apps Scriptのページで「以前のエディタを使用」を選んでください
②コードの作成
まずは以下の「指定したセルの読み込み応答コード」を全てGASに貼り付けます。
//指定したセルの読み込み応答
function doGet(e) {
// doPostから送られてきたパラメータを受け取る。
var param1 = e.parameter.pParam1;
var param2 = e.parameter.pParam2;
var param3 = e.parameter.pParam3;
// pParam2と3は予備変数
// 読み込み動作readsheetvalueを実行する
var rValue = readsheetvalue(param1, param2, param3);
// 読み込んだ値を返す
return rValue;
}
function readsheetvalue(param1, param2, param3) {
//1. 現在のスプレッドシートを取得
var spreadsheet = SpreadsheetApp.openById("スプレッドシートIDをここに入力");
//2. 現在のシートを取得
var sheet = spreadsheet.getSheetByName("シート1");
//3. 指定するセルの範囲(param1)を取得
var range = sheet.getRange(param1);
//4. 値を取得する
var value = range.getValue();
//5. テキスト化して値を設定
return ContentService.createTextOutput(value);
}
次に、プログラム内の
//1. 現在のスプレッドシートを取得
var spreadsheet = SpreadsheetApp.openById("スプレッドシートIDをここに入力");
へスプレッドシートIDを入力します。
(IDはスプレッドシートURLの右の場所です→~d/ここがID!/edit~)
③NeosVRで使う準備
ネオスで使うためには、外部アクセスを許可する必要があります。
以下の設定変更を行ってから、No.を更新してください。
「公開」→「ウェブアプリケーションとして導入」に記載されている
「Execute the app as」をme,「Who has access to the app」を「anyone~」にする。
次に、更新されたURLの一番後ろに「?pParam1=A1」を追加し、
そのURLにアクセスすることでスプレッドシートA1の値が出力されることを確認してください。
ノード「Get string」の入力側に③のURLを入力します。
あとはパルスを押して、スプレッドシートA1の値が出力されればOKです!
#【補足】
「指定したセルの書き込みコード」も同様の手順で使うことができます。
URLの一番後ろにつける文字を「?pParam1=B1&pParam2=5」とすることで
「B1」セルに「5」が入力されます。
スプレッドシートへの書き込みだけなのでNeos側への応答はないです
//指定したセルへの書き込み
function doGet(e) {
// doPostから送られてきたパラメータを受け取る。
var param1 = e.parameter.pParam1;
var param2 = e.parameter.pParam2;
var param3 = e.parameter.pParam3;
// pParam3は予備変数
// 書き込み動作Write~Spreadsheetを実行する
WriteParamSpreadsheet(param1, param2, param3);
}
function WriteParamSpreadsheet(param1, param2, param3) {
// スプレッドシートのIDを指定して変数に格納。
var InfoSpreadsheet = SpreadsheetApp.openById("スプレッドシートIDをここに入力");
// スプレッドシートの中のシート名を指定して変数に格納。
var InfoSheet = InfoSpreadsheet.getSheetByName("シート1");
// スプレッドシートへ書き込み。
InfoSheet.getRange(param1).setValue(param2);
}