没有调用setValues()的权限 - Google Apps脚本,JSON数据

时间:2016-11-25 14:13:46

标签: json google-apps-script google-sheets custom-function

这是一个Google Apps脚本,可将JSON数据提取到Google表格中。

代码是:

function pullJSON() {

  var url="https://api.myjson.com/bins/4610d"; // publicly available json

  var response = UrlFetchApp.fetch(url); // 
  var sheet =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");

  var dataAll = JSON.parse(response.getContentText()); 
  var dataSet = dataAll;

  var rows = [],
      data;

  for (i = 0; i < Object.keys(dataSet).length; i++) {
    data = dataSet[Object.keys(dataSet)[i]];
    rows.push([data.name]); //JSON entities here
  }

  dataRange = sheet.getRange(1, 1, rows.length, 1); 
  dataRange.setValues(rows);
}

在Google表格中,我通过在单元格中输入= pullJSON()来调用该函数。它显示错误:

“您无权调用setValues(第20行)”,这是指行:dataRange.setValues(rows);

并在单元格A1,A2,A3中生成“未定义”结果。

JSON数据源就是这样:

{"id":1,"name":"A green door","price":12.5}

这样做的目的是能够在Google工作表中将JSON数据转换为表格形式。

以上大部分都紧跟了这个帖子中的内容: "The coordinates or dimensions of the range are invalid" - Google Apps Script and JSON Data

请非常感谢有关此问题的任何指导。

1 个答案:

答案 0 :(得分:4)

  

自定义函数不会影响它返回的单元格以外的单元格   价值。换句话说,自定义函数不能随意编辑   细胞,只有它被调用的细胞和它们相邻的细胞。至   编辑任意单元格,使用自定义菜单来代替运行函数。

来自文档:https://developers.google.com/apps-script/guides/sheets/functions

我不知道您的确切用例,但看起来可以从自定义菜单中运行您的功能。