根据我的理解,将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(),它不会让我区分添加到工作表/更新工作表/从床单很容易?
我在这里完全错过了什么吗?如果这是完全错误的做法,如果有人能指出我正确的方向,我将非常感激。
谢谢!
答案 0 :(得分:0)
根据此SO question,通过添加SpreadsheetApp调用,您已经修改了脚本所需的身份验证范围。您需要更新范围以包含电子表格。
要使用API,您必须提供涵盖脚本使用的所有范围的有效OAuth令牌。要查找要包含在身份验证令牌中的正确范围,请在脚本编辑器中打开项目,然后选择“文件”>单击项目属性,然后单击“范围”选项卡。
以下是OAuth范围列表的link。
另请查看此SO question以获取更多信息。