Есть несколько вещей, которые вы должны установить, чтобы достичь своей конечной цели. Я перечислю их, чтобы вы могли следить за ними шаг за шагом:
1) В вашем проекте скриптов приложений go до Просмотр -> Показать файл манифеста .
2) Откройте появившийся файл appscript.json
и вставьте его:
{
"timeZone": "Europe/Paris",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/script.projects",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/documents",
"https://www.googleapis.com/auth/spreadsheets"
]
}
3) Go в Google Cloud Platform и скопируйте Номер проекта
4) В вашем проекте Apps Script Go до Ресурсы -> Проект Cloud Platform , вставьте ранее скопированный Номер проекта и нажмите Установить проект .
5) Теперь используйте этот код, я предоставлю вам и объясню его функции:
Функция main
получит и установит значения листа. Обратите внимание, что я также добавил в код глобальную переменную JSON для построения запросов к API скриптов приложений
// JSON for the requests
var options = {
'headers': { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}`},
'contentType': 'application/json',
'method': '',
'payload': ''
};
// This is the main function to run
function main() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var titleTranslation = sheet.getRange(row, 3).getValue();
var translation = Browser.inputBox(titleTranslation , 'Please enter the translation here:', Browser.Buttons.OK_CANCEL);
var docUrl = createDocwithCode(translation);
sheet.getRange(row, 6).setValue(docUrl);
}
createDocwithCode
позволит вам создать проект скриптов приложений который будет связан с вашим Do c.
// This will create the doc and link an Apps Script project
function createDocwithCode(translation){
var doc = DocumentApp.create(translation);
// Make a POST request with a JSON payload.
options['method'] = "post";
options['payload'] = JSON.stringify({ 'title': doc.getName(), 'parentId': doc.getId()});
// Call the Apps Script API -> Method: projects.create
var res = UrlFetchApp.fetch('https://script.googleapis.com/v1/projects', options);
addCodeToDoc(JSON.parse(res.getContentText()));
return doc.getUrl();
}
. addCodeToDoc
заполнит недавно созданный код скрипта приложения требуемым содержимым.
// Fill the previously Created Apps Script project with content
function addCodeToDoc({scriptId, title}){
// Make a PUT request with a JSON payload.
options['method'] = "put";
options['payload'] = JSON.stringify({
"files": [
{
"name": title.replace(/\s+/g, ''),
"type": "SERVER_JS",
"source": createFunctionForDoc()
},
{
"type": "JSON",
"name": "appsscript",
"source": "{\n \"timeZone\": \"Europe/Paris\",\n \"dependencies\": {\n },\n \"exceptionLogging\": \"STACKDRIVER\"\n}"
}
]
})
// Call the Apps Script API -> Method: projects.updateContent
UrlFetchApp.fetch(`https://script.googleapis.com/v1/projects/${scriptId}/content`, options);
}
Наконец, createFunctionForDoc
- это функция для простого написания будущего кода в недавно созданном коде скрипта приложений.
// Fill The Script with your desired funtions
function createFunctionForDoc(){
return `
function customFunction(){
Logger.log("Hello World");
}
`
}
Весь ваш код будет выглядеть так:
// JSON for the requests
var options = {
'headers': { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}`},
'contentType': 'application/json',
'method': '',
'payload': ''
};
// This is the main function to run
function main() {
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveCell().getRow();
var titleTranslation = sheet.getRange(row, 3).getValue();
var translation = Browser.inputBox(titleTranslation , 'Please enter the translation here:', Browser.Buttons.OK_CANCEL);
var docUrl = createDocwithCode(translation);
sheet.getRange(row, 6).setValue(docUrl);
}
// This will create the doc and link an Apps Script project
function createDocwithCode(translation){
var doc = DocumentApp.create(translation);
// Make a POST request with a JSON payload.
options['method'] = "post";
options['payload'] = JSON.stringify({ 'title': doc.getName(), 'parentId': doc.getId()});
// Call the Apps Script API -> Method: projects.create
var res = UrlFetchApp.fetch('https://script.googleapis.com/v1/projects', options);
addCodeToDoc(JSON.parse(res.getContentText()));
return doc.getUrl();
}
// Fill the previously Created Apps Script project with content
function addCodeToDoc({scriptId, title}){
// Make a PUT request with a JSON payload.
options['method'] = "put";
options['payload'] = JSON.stringify({
"files": [
{
"name": title.replace(/\s+/g, ''),
"type": "SERVER_JS",
"source": createFunctionForDoc()
},
{
"type": "JSON",
"name": "appsscript",
"source": "{\n \"timeZone\": \"Europe/Paris\",\n \"dependencies\": {\n },\n \"exceptionLogging\": \"STACKDRIVER\"\n}"
}
]
})
// Call the Apps Script API -> Method: projects.updateContent
UrlFetchApp.fetch(`https://script.googleapis.com/v1/projects/${scriptId}/content`, options);
}
// Fill The Script with your desired funtions
function createFunctionForDoc(){
return `
function customFunction(){
Logger.log("Hello World");
}
`
}
Документы
Есть документы, которые я использовал, чтобы помочь вам