我使用PropertiesServices
作为变量,特别是文档属性,以替换"{client name}"
之类的某些令牌。由于这些属性仅限于绑定脚本,我正在寻找一种从PHP应用程序修改其值的方法。
是否可以使用Execution API调用绑定脚本的函数,或者可以从独立脚本调用?否则,我应该改为使用脚本属性(尽管文档让我觉得如果脚本不是'独立的话)你就不能使用它们。
答案 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)
}