我在GAS中有一个代码,它与后台的电子表格一起工作,并且可以同时用于单一用途。问题是,我想在代码的开头创建一个电子表格的副本,以便与每个进入web应用程序的用户进行交互。我尝试了两种可能性:
代码
var x;
if(x == null){
var myArray = crearnuevoarchivo(x);
x = myArray[0];
var database = myArray[1];
}
const sheetConfiguracion = database.getSheetByName("Configuracion");
var lastRowProgramas = lastRowForColumn(sheetConfiguracion, 18);
var lastRowMandos = lastRowForColumn(sheetConfiguracion, 12);
const sheetTipos = database.getSheetByName("Tipos");
var lastRowTipos = sheetTipos.getLastRow();
const sheetSolicitud = database.getSheetByName("Solicitud");
const registro_peticiones = SpreadsheetApp.openById('xxxxxxxxxxxxxx');
const sheetRegistro = registro_peticiones.getSheetByName("Registro");
const sheetHerramientas = database.getSheetByName("Herramientas");
var lastRowHerramientas = lastRowForColumn(sheetHerramientas, 1);
const sheetSolicitudFOD = database.getSheetByName("Solicitud_FOD");
const sheetfotosID = database.getSheetByName("FotosID");
function crearnuevoarchivo(x){
if(x == null){
const database2 = SpreadsheetApp.openById('xxxxxxxxxxxxxx');
var hoyarchivo = new Date();
var mesarchivo = hoyarchivo.getMonth() + 1;
var fechaarchivo = mesarchivo+"/"+hoyarchivo.getFullYear();
const databaseID = DriveApp.getFileById('xxxxxxxxxx').makeCopy('database '+fechaarchivo, DriveApp.getFolderById('xxxxxxxxxxxxx')).getId();
var database = SpreadsheetApp.openById(databaseID);
x = 1;
var myArray = new Array(2);
myArray[0] = x;
myArray[1] = database;
return myArray
}
}
var rutaWeb = ScriptApp.getService().getUrl();
function doGet(e) {
if(e.parameter.p){
var page = e.parameter.p;
if(page == "noFOD"){
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
var valor = nuevaSheet.getRange(2, 14).getValue();
return HtmlService.createTemplateFromFile(page).evaluate();
}
else{
if(page == "catalogo"){
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
nuevaSheet.getRange(3, 14).setValue(1);
var valor = nuevaSheet.getRange(3, 14).getValue();
return HtmlService.createTemplateFromFile(page).evaluate();
}
if(page == "index"){
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
var valor = nuevaSheet.getRange(5, 14).getValue();
var r = 5;
borrar_registro_noFOD();
borrar_registro_FOD()
return HtmlService.createTemplateFromFile(page).evaluate();
}
if(page == "FOD"){
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
var valor = nuevaSheet.getRange(4, 14).getValue();
var r = 4;
return HtmlService.createTemplateFromFile(page).evaluate();
}
if(page == "catalogoFOD"){
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
var r = 6;
nuevaSheet.getRange(6, 14).setValue(r)
return HtmlService.createTemplateFromFile(page).evaluate();
}
}
}else{
var out = new Array()
var sheets = database.getSheets();
for (var i=12 ; i < sheets.length ; i++){
var sheet= database.getSheetByName(sheets[i].getName());
database.deleteSheet(sheet);
}
const sheetTipos = database.getSheetByName("Tipos");
sheetTipos.copyTo(database);
var hojas = database.getSheets();
var nuevaSheet = hojas.pop();
nuevaSheet.getRange(2, 14).setValue(0);
nuevaSheet.getRange(3, 14).setValue(0);
nuevaSheet.getRange(4, 14).setValue(0);
nuevaSheet.getRange(5, 14).setValue(0);
nuevaSheet.getRange(1, 14, 7, 1).clearContent();
nuevaSheet.getRange(2, 14, 6, 1).setValue(0);
nuevaSheet.getRange(1, 15, 100, 7).clearContent();
borrar_registro_noFOD(database);
borrar_registro_FOD(database)
var x = 1;
var page = "index";
}
return HtmlService.createTemplateFromFile(page).evaluate();
}从Index.html传递的参数示例
/* <a href="<?!= rutaWeb + '?p=noFOD' ?>" */发布于 2020-12-01 09:05:45
Apps脚本中的全局变量与其他编程语言中的全局变量不同。
存储全局变量的一种方法是在Apps脚本中使用PropertiesService类,并使用:
setProperty(key, value) -用于存储键值对;getProperty(key) -用于检索与键关联的值。参考文献
https://stackoverflow.com/questions/64926070
复制相似问题