带有Simple Access API密钥的Google Execution API可以访问AUTHORS电子表格吗?

时间:2016-05-10 13:58:32

标签: javascript google-apps-script google-api

根据我的理解,将Google脚本部署为Google Execution API可让我在需要时分别从我的脚本中调用每个功能。

我有一个带有一些按钮和表单的网页,我想在我的脚本中运行这些功能。

我有一个带有一些(示例)功能的Google脚本:

function addPlayer(name,email,group) {
  //name email group
  var ss = SpreadsheetApp.openById(SHEET_ID); //Sheet belonging to me, script author.
  var sheet = ss.getSheetByName("Players");

  sheet.appendRow(new Date(),name,email,group);

}

function updatePlayer() {
  //update player row with new data
  //name email group

}

function anotherFunction() {
  //store some data in another sheet within spreadsheet.    
}

function listPlayers()
{
    //return data from sheet
}

一个想要从该脚本运行函数的示例网页:

function OnLoadCallback() { //on gapi load

  gapi.client.setApiKey(API_KEY); //developer dashboard generated browser API key 

  // Create execution request.
  var request = {
    'function': 'addPlayer',
    'parameters': [name,email,group],
    'devMode': true  
  };

  // Make the request.
  var op = gapi.client.request({
  'root': 'https://script.googleapis.com',
  'path': 'v1/scripts/' + scriptId + ':run',
  'method': 'POST',
  'body': request
 });
}

我目前收到401 UNAUTHENTICATED错误,说我没有有效的身份验证凭据。

此网页是否可以使用API​​而无需每个网页访问者访问oAuth(这对我来说没有意义,因为它不是我试图访问的数据/表单而是我自己的?我知道如果部署作为Web应用程序,我可以将其设置为执行AS me,但Execution API是否有类似的等效项?

我选择使用执行脚本,因为我需要能够运行几个不同的功能,作为一个webapp,我唯一的选择就是doPost(),它不会让我区分添加到工作表/更新工作表/从床单很容易?

我在这里完全错过了什么吗?如果这是完全错误的做法,如果有人能指出我正确的方向,我将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据此SO question,通过添加SpreadsheetApp调用,您已经修改了脚本所需的身份验证范围。您需要更新范围以包含电子表格。

要使用API​​,您必须提供涵盖脚本使用的所有范围的有效OAuth令牌。要查找要包含在身份验证令牌中的正确范围,请在脚本编辑器中打开项目,然后选择“文件”>单击项目属性,然后单击“范围”选项卡。

以下是OAuth范围列表的link

另请查看此SO question以获取更多信息。