La siguiente secuencia de comandos del lado del servidor recibe la entrada del usuario de un formulario HTML y agrega estos datos/entradas de usuario a la última fila disponible de mi hoja de cálculo de Google. Ha estado funcionando bastante bien. Pero ahora quiero almacenar algunos elementos de la matriz que se encuentra en este script como variables globales, para poder reutilizarlos más adelante en otras funciones del lado del servidor vinculadas a la misma hoja de Google. Estoy específicamente interesado en los valores dentro de lastName , email y phone . ¿Alguna idea de cómo se puede hacer esto?
Muchas gracias de antemano por sus consejos y ayuda.
function AddUserInputToSheet(gender, firstName, lastName, age, email, phone) { var url = 'SHEET_URL'; var ss = SpreadsheetApp.openByUrl(url); var webAppSheet = ss.getSheetByName("SHEET_NAME"); webAppSheet.appendRow([gender, firstName, lastName, age, email, phone]); }Puede utilizar el Servicio de propiedades de Apps Script.
Este servicio permite que las secuencias de comandos almacenen cadenas como pares clave-valor en el ámbito de una secuencia de comandos, un usuario de una secuencia de comandos o un documento en el que se utiliza un complemento de editor.
En tu caso, hay 2 opciones que puedes elegir. Propiedades del script y propiedades del usuario .
La diferencia entre los dos es que el contenido de las propiedades del script se comparte con todos los usuarios, mientras que las propiedades del usuario solo están disponibles para el usuario actual de un script, complemento o aplicación web.
Aquí creé un ejemplo de cómo usar Propiedades.
function setProperties(lastName = "Test Last Name", email = "Test Email", phone = "Test Phone"){ var scriptProperties = PropertiesService.getScriptProperties(); scriptProperties.setProperties({'lastName': lastName, 'email': email, 'phone':phone}) } function readProperties(){ var scriptProperties = PropertiesService.getScriptProperties(); Logger.log(scriptProperties.getProperties()); } Aquí ejecuto primero la función readProperties() y el resultado es
Luego ejecuto 'setProperties()' y vuelvo a ejecutar la función readProperties() nuevamente:
Recargué la página del script y ejecuté la función readProperties() :
Para agregarlo en su secuencia de comandos, puede establecer las propiedades en AddUserInputToSheet() y llamarlo en cualquier parte de su secuencia de comandos.
Ejemplo:
function AddUserInputToSheet(gender, firstName, lastName, age, email, phone) { var url = 'SHEET_URL'; var ss = SpreadsheetApp.openByUrl(url); var webAppSheet = ss.getSheetByName("SHEET_NAME"); webAppSheet.appendRow([gender, firstName, lastName, age, email, phone]); var scriptProperties = PropertiesService.getScriptProperties(); scriptProperties.setProperties({'lastName': lastName, 'email': email, 'phone':phone}) } function someFunction(){ var scriptProperties = PropertiesService.getScriptProperties(); var data = scriptProperties.getProperties(); var lastName = data["lastName"]; var email = data["email"]; var phone = data["phone"]; //some operations here }Aquí hay un ejemplo:
function myfunk1() { PropertiesService.getScriptProperties().setProperty('Global1',JSON.stringify(SpreadsheetApp.getActive().getSheetByName('Sheet0').getDataRange().getDisplayValues())); } function myfunk2() { const vs = JSON.parse(PropertiesService.getScriptProperties().getProperty('Global1')) SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(1,1,vs.length,vs[0].length).setValues(vs); }