Необходимо использовать API скриптов приложений.Вы можете использовать REST API и сделать запрос UrlFetchApp.fetch(url)
.Это двухступенчатый процесс.Сначала вы должны создать новый файл скрипта приложения, затем вы должны обновить этот новый файл скрипта приложения новым содержимым в файле манифеста.Файл манифеста должен иметь свойство для webapp
, которое определяет тип развертывания.
Код, вероятно, будет выглядеть примерно так:
function deployA_project() {
var id, OAuthToken,options,payload,rtrn,url;
id = ScriptApp.getScriptId();//Get the project ID of this script project
Logger.log('id: ' + id)
url = 'https://script.googleapis.com/v1/projects/' + id + '/deployments';//For REST
OAuthToken = ScriptApp.getOAuthToken();
payload = {
"versionNumber": number,
"manifestFileName": string,
"description": string
}
options = {
"method" : "POST",
"muteHttpExceptions": true,
"headers": {
'Authorization': 'Bearer ' + OAuthToken
},
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
rtrn = UrlFetchApp.fetch(url,options);
Logger.log('rtrn: ' + rtrn)
}
См. Документацию: projects.deployments.create
Способ развертывания проекта сценария приложений определяется в файле манифеста:
{
"timeZone": "America/New_York",
"dependencies": {
},
"webapp": {
"access": "MYSELF",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER"
}
API не предоставляет параметр конфигурации для созданиятип развертывания.Таким образом, превращение развертывания в веб-приложение выполняется путем обновления файла манифеста.Это должен быть двухэтапный процесс.Сначала вы создаете новый файл проекта, а затем обновляете его с помощью объекта JSON содержимого файла.Вы можете назначить содержимое файла манифеста с именем "appsscript.json"
Содержимое должно быть в формате JSON в следующем формате:
{
"scriptId": "scriptId",
"files": [{
"name": "appsscript",
"type": "JSON",
"source": "{\"timeZone\":\"America/New_York\", \"webapp\": {\"access\": \"MYSELF\",\"executeAs\": \"USER_DEPLOYING\"},\"exceptionLogging\":\"STACKDRIVER\"}",
"lastModifyUser": {
"name": "MyName",
"email": "example@gmail.com",
}
}]
}
Вам необходимо сделать другой запрос к другомуurl, и запрос должен быть запросом PUT, чтобы сделать обновление:
url = 'https://script.googleapis.com/v1/projects/' + id + '/deployments/' + {deploymentId}
var newContent = {
"scriptId": "scriptId",
"files": [{
"name": "appsscript",
"type": "JSON",
"source": "{\"timeZone\":\"America/New_York\", \"webapp\": {\"access\": \"MYSELF\",\"executeAs\": \"USER_DEPLOYING\"},\"exceptionLogging\":\"STACKDRIVER\"}",
"lastModifyUser": {
"name": "MyName",
"email": "example@gmail.com",
}
}]
}
var requestBody = {};
requestBody.files = newContent;
requestBody.deploymentConfig = {
"scriptId": string,
"versionNumber": number,
"manifestFileName": string,
"description": string
}
options = {
"method" : "PUT",
"muteHttpExceptions": true,
"headers": {
'Authorization': 'Bearer ' + OAuthToken
},
"contentType": "application/json",
"payload": JSON.stringify(requestBody)
};
rtrn = UrlFetchApp.fetch(url,options);
Logger.log('rtrn: ' + rtrn)