1
私はAppScriptを習得しようとしており、Googleスプレッドシートを例として使用しています。私は単純なJSONオブジェクトを作成したいと思います。GoogleスプレッドシートからJSONオブジェクトを作成する
表の例
Name ID Price Qty ABC 123 100 1 DEF 342 56 2 HIJ 233 90 3 IJK 213 68 5
私は、このYouTubeのチュートリアル以下で開始
[
{
"Name": "ABC",
"ID": "123",
"Price": 100,
"Qty": 1
},
{
"Name": "DEF",
"ID": "342",
"Price": 56,
"Qty": 2
},
{
"Name": "HIJ",
"ID": "233",
"Price": 90,
"Qty": 3
},
{
"Name": "IJK",
"ID": "213",
"Price": 68,
"Qty": 5
}
]
のようなものにするためにJSONを出したい:https://www.youtube.com/watch?v=TQzPIVJf6-wを。しかし、ビデオは各列ヘッダーをオブジェクトとして作成することについて話しています。どこで列名をkey
、行値をvalue
にするかを指定します。ここで
は私の現在のAppScriptコード
function doGet() {
var result={};
var rewards = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1')
.getDataRange()
.getValues();
result.rewardObj = makeObject(rewards);
//Logger.log(result.rewardObj);
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON)
}
function makeObject(multiArray)
{
var obj = {};
var colNames = multiArray.shift();
var rowNames = multiArray.slice(0,1);
var rowCount = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getLastRow();
var colCount = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getLastColumn();
for(var j=0;j<4;j++)
{
for(var i=0;i<4;i++)
{
//obj[colNames] = rowNames.map(function(item){return item[i];});
obj[colNames[j][i]] = multiArray[j][i];
}
}
Logger.log(rowCount)
Logger.log(colCount)
Logger.log(multiArray[57][12]);
return obj;
}
出力され、単一のオブジェクト
{"rewardObj":{"Name":"ABC","ID":"123","Price":"100","Qty":"1"}}
PSです:私はプログラマではないよ、私はちょうどhackey方法でいくつかのスクリプトを学んでいます。基本を知らないために謝罪:)
うわー美しく働きました。どうもありがとうございました。私はコードが何をしているのかを理解するために勉強しています。いくつかのコメントを追加できる場合、それは非常に役立つでしょう。私がやっていた主な間違いは、配列の代わりにオブジェクト 'obj'を返すことだったと思いますか? – maverick340
具体的には、このコード行は何を意味するのかを説明できますか? obj [ヘッダー[col]] =行[col]; – maverick340
@ maverick340最初の行(列のヘッダー)から値を取り出し、それをキーとして設定しています。次に、あなたがいる行の値を取得し、値として設定します。希望が助けてくれる! –