[ { 'place':{ 'title' : 'title', 'desc' : 'desc' } } ]
スプレッドシートに入力した情報を上記のようなjsonデータで出力したいのですが、
下記のコードでタイトルのエラーが出てしまいます。
原因がわからないので、ご教授よろしくお願いいたします。
function getData(id, sheet) { var rowIndex = 2; var columnStr = 1; var rowNum = 1; var firstRange = sheet.getRange(1,1,1,sheet.getLastColumn()); var firstRowValues = firstRange.getValues(); // ここでエラー var titleColumns = firstRowValues[0]; var indexPlace = titleColumns.indexOf('place'); var indexTitle = titleColumns.indexOf('title'); var indexDesc = titleColumns.indexOf('desc'); var indexArray =[indexPlace,indexTitle,indexDesc]; var lastRow = sheet.getLastRow(); var rowValues = []; for(rowIndex; rowIndex<=lastRow; rowIndex++) { var range = sheet.getRange(rowIndex, columnStr, rowNum, sheet.getLastColumn()); var values = range.getValues(); rowValues.push(values[0]); } var dataArray = []; for(var i = 0; i<rowValue.length; i++){ var line = rowValues[i]; var json = new Object(); var firstJson = new Object(); firstJson[line[indexTitle]] = line[indexDesc]; json[line[indexPlace]] = firstJson; dataArray.push(json); } return dataArray; }
GASですよね。タグの追加をお勧めします。
はい、GASのタグもあるのですね、知りませんでした。
ありがとうございます。
関数の呼び出しはスプレッドシートからですか?
スプレッドシートからです。
呼び出しの数式の例をご提示いただくのは差し支えありますか?
とりあえず、当方の環境で、新しいシートのA1セルに
=getData()
としたところ、以下のエラーを得ました。
TypeError: undefined のメソッド「getRange」を呼び出せません。(行 5
これ以上の検証は、呼び出しの数式がないと難しいかもしれません。
あ!失礼しました。スプレッドシートから呼び出してはいませんでした。
すべてGASの中で完結しています。
function doGet() {
var data = getData('SheetID', 'Sheet1');
return ContentService.createTextOutput(JSON.stringify(data, null, 2))
.setMimeType(ContentService.MimeType.JSON);
}
こちらが呼び出しの関数です。
第2引数には、Sheetオブジェクトを渡す必要があると思います。
参考になりそうなページがあったので、URLを張りますね。
https://tech-cci.io/archives/1377