使用Execution API调用绑定脚本的方法

时间:2017-01-05 21:01:53

标签: google-apps-script

我使用PropertiesServices作为变量,特别是文档属性,以替换"{client name}"之类的某些令牌。由于这些属性仅限于绑定脚本,我正在寻找一种从PHP应用程序修改其值的方法。

是否可以使用Execution API调用绑定脚本的函数,或者可以从独立脚本调用?否则,我应该改为使用脚本属性(尽管文档让我觉得如果脚本不是'独立的话)你就不能使用它们。

1 个答案:

答案 0 :(得分:3)

如果运行Execution API的用户具有对执行API运行的绑定脚本的doc的权限,则可以读取文档属性。

这是我的测试: 创建一个新的电子表格。创建一个新脚本。使用onOpen中的菜单添加一些数据。在脚本中运行executeAPI。日志成功显示文档属性。

function onOpen() {
  var testMenu = SpreadsheetApp.getUi().createMenu("test")
  testMenu.addItem("Add some data", "addData").addToUi();
  testMenu.addItem("Preview data", "getData").addToUi();
}


function getData(){   
  var keys = PropertiesService.getDocumentProperties().getKeys();
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().clear().appendRow(keys)
}

function returnData(){
  return PropertiesService.getDocumentProperties().getKeys();
}


function addData(){
  var DT = new Date().toString()
  PropertiesService.getDocumentProperties().setProperty(DT,DT);
}



function executeAPI(){
  var url = 'https://script.googleapis.com/v1/scripts/'+ScriptApp.getProjectKey()+':run';

  var payload = JSON.stringify({"function": "returnData","parameters":[], "devMode": true});

  var params={method:"POST",

              headers:{Authorization: "Bearer "+ ScriptApp.getOAuthToken()}, 
              payload:payload,
              contentType:"application/json",
              muteHttpExceptions:true};
  var results = UrlFetchApp.fetch(url, params);
  Logger.log(results) 
}