У меня есть эта глобальная переменная в моем сценарии:GAS: Как изменить значение глобальной переменной и сохранить измененное значение при использовании переменной в функции обработчика?
var targetDocId = 'No doc ID informed yet';
Я пытаюсь изменить значение этой глобальной переменной внутри моей главной функции:
function generatePersonDatasheet() {
var target = createDuplicateDocument(template, docName);
var link = target.getUrl();
targetDocId = target.getId(); // <-------- HERE
if (theses == 1){
Logger.log("going to showList() ");
return showList();
}
showURL(docName, link);
}
После этого я пытаюсь Асесс измененную глобальное значение переменной в функции обработчика:
function submit(e){
var numberOfItems = Number(e.parameter.checkbox_total);
var thesesArrays = [];
for(var i = 0; i < numberOfItems; i++){
if(e.parameter['checkbox_isChecked_'+i] == 'true'){
thesesArrays.push(fact_list[i]);
}
}
for (var i = 0; i < thesesArrays.length; i++){
var thesesId = thesesArrays[i][2];
var thesesType = thesesArrays[i][1];
importTheses(targetDocId, thesesId, thesesType); // <-----HERE
}
return UiApp.getActiveApplication().close();
}
function importTheses(targetDocId, thesesId, thesesType) {
var targetDoc = DocumentApp.openById(targetDocId);
var targetDocParagraphs = targetDoc.getParagraphs();
var targetDocElements = targetDocParagraphs.getNumChildren();
var thesesDoc = DocumentApp.openById(thesesId);
var thesesParagraphs = thesesDoc.getParagraphs();
var thesesElements = thesesDoc.getNumChildren();
var eltargetDoc=[];
var elTheses=[];
for(var j = 0; j < targetDocElements; ++j) {
var targetDocElement = targetDoc.getChild(j);
eltargetDoc[j]=targetDocElement.getText();
if(el[j]== thesesType){
for(var k = 0; k < thesesParagraphs-1; ++k) {
var thesesElement = thesesDoc.getChild(k);
elTheses[k] = thesesDoc.getText();
targetDoc.insertParagraph(j, elTheses[k]);
}
}
}
}
Но, до тех пор, как я tryied изменить targetDocId
, когда его использование в качестве аргумента до importTheses(targetDocId, thesesId, thesesType);
он все еще имеет значение «Неизвестный идентификатор документа», даже я его изменил, как если бы программа была запущена с самого начала. Является альтернативой этому поведению «возврат к первоначальному значению»? Или мне нужно использовать scriptDB или ScriptProperties для хранения измененного значения глобальной переменной?
Очень богатый ответ! Я попробую использовать службу кеша! Спасибо, @Mogsdad! – craftApprentice