Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El servicio Properties te permite almacenar datos simples en pares clave-valor limitados a una secuencia de comandos, a un usuario de una secuencia de comandos o a un documento en el que se usa un complemento. Por lo general, se usa para almacenar la configuración del desarrollador o las preferencias del usuario. Las propiedades nunca se comparten entre secuencias de comandos.
El objeto global PropertiesService ofrece tres métodos, cada uno de los cuales devuelve un objeto Properties similar, pero con diferentes derechos de acceso, como se muestra en la siguiente tabla:
Todos los usuarios de una secuencia de comandos, un complemento o una aplicación web
El usuario actual de una secuencia de comandos, un complemento o una app web
Todos los usuarios de un complemento en el documento abierto
Se usa generalmente para
Datos de configuración de toda la app, como el nombre de usuario y la contraseña de la base de datos externa del desarrollador
Configuración específica del usuario, como unidades métricas o imperiales
Datos específicos del documento, como la URL de origen de un gráfico incorporado
Formato de los datos
El servicio de Properties almacena todos los datos como cadenas en pares clave-valor. Los tipos de datos que aún no son cadenas se convierten automáticamente en cadenas, incluidos los métodos contenidos en los objetos guardados.
Cómo guardar datos
Para guardar un solo valor, llama al método Properties.setProperty(key,
value) del almacén adecuado, como se muestra en el siguiente ejemplo:
try{// Set a property in each of the three property stores.constscriptProperties=PropertiesService.getScriptProperties();constuserProperties=PropertiesService.getUserProperties();constdocumentProperties=PropertiesService.getDocumentProperties();scriptProperties.setProperty('SERVER_URL','http://www.example.com/');userProperties.setProperty('DISPLAY_UNITS','metric');documentProperties.setProperty('SOURCE_DATA_ID','1j3GgabZvXUF177W0Zs_2v--H6SPCQb4pmZ6HsTZYT5k');}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
Para guardar datos de forma masiva, pasa un mapa de pares clave-valor a Properties.setProperties(properties).
Cada par clave-valor del objeto en el parámetro se almacena como una propiedad independiente:
try{// Set multiple script properties in one call.constscriptProperties=PropertiesService.getScriptProperties();scriptProperties.setProperties({'cow':'moo','sheep':'baa','chicken':'cluck'});}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
try{// Get the value for the user property 'DISPLAY_UNITS'.constuserProperties=PropertiesService.getUserProperties();constunits=userProperties.getProperty('DISPLAY_UNITS');console.log('values of units %s',units);}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
try{// Get multiple script properties in one call, then log them all.constscriptProperties=PropertiesService.getScriptProperties();constdata=scriptProperties.getProperties();for(constkeyindata){console.log('Key: %s, Value: %s',key,data[key]);}}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
Modificar datos
Los métodos getProperty() y getProperties() devuelven una copia de los datos almacenados, no una vista activa, por lo que cambiar el objeto devuelto no actualizará el valor en el almacén de propiedades. Para actualizar los datos en el almacén, simplemente vuelve a guardarlos:
try{// Change the unit type in the user property 'DISPLAY_UNITS'.constuserProperties=PropertiesService.getUserProperties();letunits=userProperties.getProperty('DISPLAY_UNITS');units='imperial';// Only changes local value, not stored value.userProperties.setProperty('DISPLAY_UNITS',units);// Updates stored value.}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
try{// Delete the user property 'DISPLAY_UNITS'.constuserProperties=PropertiesService.getUserProperties();userProperties.deleteProperty('DISPLAY_UNITS');}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
try{// Get user properties in the current script.constuserProperties=PropertiesService.getUserProperties();// Delete all user properties in the current script.userProperties.deleteAllProperties();}catch(err){// TODO (developer) - Handle exceptionconsole.log('Failed with error %s',err.message);}
Administra las propiedades de las secuencias de comandos de forma manual
Puedes agregar manualmente hasta cincuenta propiedades personalizadas, como cadenas en pares clave-valor, desde la página de configuración del proyecto. Para agregar más de cincuenta propiedades, debes agregarlas de forma programática con los métodos que se describen anteriormente en Cómo guardar datos.
Cuando configuras propiedades de la secuencia de comandos desde la página de configuración del proyecto, no puedes hacer referencia a variables de la secuencia de comandos.
Cómo agregar propiedades de secuencias de comandos
Abre tu proyecto de Apps Script.
A la izquierda, haz clic en Configuración del proyecto.
Para agregar la primera propiedad, en Propiedades de secuencia de comandos, haz clic en Agregar propiedad de secuencia de comandos.
Para agregar la segunda propiedad y las siguientes, en Propiedades de la secuencia de comandos, haz clic en Editar propiedades de la secuencia de comandos>Agregar propiedad de secuencia de comandos.
En Propiedad, ingresa el nombre de la clave.
En Valor, ingresa el valor de la clave.
(Opcional) Para agregar más propiedades, haz clic en Agregar propiedad de secuencia de comandos.
Haz clic en Guardar las propiedades de la secuencia de comandos.
Cómo editar las propiedades de la secuencia de comandos
Abre tu proyecto de Apps Script.
A la izquierda, haz clic en Configuración del proyecto.
En Propiedades de la secuencia de comandos, haz clic en Editar las propiedades de la secuencia de comandos.
Realiza cambios en el nombre y el valor de la clave para cada propiedad que desees cambiar.
Haz clic en Guardar las propiedades de la secuencia de comandos.
Cómo borrar las propiedades de la secuencia de comandos
Abre tu proyecto de Apps Script.
A la izquierda, haz clic en Configuración del proyecto.
En Propiedades de la secuencia de comandos, haz clic en Editar las propiedades de la secuencia de comandos.
Junto a la propiedad que deseas borrar, haz clic en Quitar close.
Haz clic en Guardar las propiedades de la secuencia de comandos.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-31 (UTC)"],[[["\u003cp\u003eThe Properties service allows you to store simple data as key-value pairs, with separate stores for script, user, and document properties.\u003c/p\u003e\n"],["\u003cp\u003eData is stored as strings and automatically converted if it's a different data type, with access varying depending on the chosen property store.\u003c/p\u003e\n"],["\u003cp\u003eYou can save, read, modify, and delete data within these property stores using specific methods provided by the Properties service.\u003c/p\u003e\n"],["\u003cp\u003eScript properties can also be managed manually through the project settings page for a limited number of custom properties.\u003c/p\u003e\n"]]],[],null,["# Properties Service\n\nThe [Properties service](/apps-script/reference/properties) lets you store\nsimple data in key-value pairs scoped to one script, one user of a script, or\none document in which an [add-on](/workspace/add-ons/overview) is used. It is\ntypically used to store developer configuration or user preferences. Properties\nare never shared between scripts.\n\nTo view the daily quotas and storage limits for the Properties service, see\n[Quotas for Google Services](/apps-script/guides/services/quotas).\n\nComparison of property stores\n-----------------------------\n\nThe\n[`PropertiesService`](/apps-script/reference/properties/properties-service)\nglobal object offers three methods, each of which returns a similar\n[`Properties`](/apps-script/reference/properties/properties)\nobject but with different access rights, as shown in the following table:\n\n| | Script Properties | User Properties | Document Properties |\n|--------------------|-----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| Method to access | [getScriptProperties()](/apps-script/reference/properties/properties-service#getScriptProperties()) | [getUserProperties()](/apps-script/reference/properties/properties-service#getUserProperties()) | [getDocumentProperties()](/apps-script/reference/properties/properties-service#getDocumentProperties()) |\n| Data shared among | All users of a script, add-on, or web app | The current user of a script, add-on, or web app | All users of an add-on in the open document |\n| Typically used for | App-wide configuration data, like the username and password for the developer's external database | User-specific settings, like metric or imperial units | Document-specific data, like the source URL for an embedded chart |\n\nData format\n-----------\n\nThe Properties service stores all data as strings in key-value pairs. Data types\nthat are not already strings are automatically converted to strings, including\nmethods contained within saved objects.\n\nSaving data\n-----------\n\nTo save a single value, call the method [`Properties.setProperty(key,\nvalue)`](/apps-script/reference/properties/properties#setProperty(String,String))\nof the appropriate store, as shown in the following example: \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Set a property in each of the three property stores.\n const scriptProperties = PropertiesService.getScriptProperties();\n const userProperties = PropertiesService.getUserProperties();\n const documentProperties = PropertiesService.getDocumentProperties();\n\n scriptProperties.setProperty('SERVER_URL', 'http://www.example.com/');\n userProperties.setProperty('DISPLAY_UNITS', 'metric');\n documentProperties.setProperty('SOURCE_DATA_ID',\n '1j3GgabZvXUF177W0Zs_2v--H6SPCQb4pmZ6HsTZYT5k');\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nTo save data in bulk, pass a map of key-value pairs to\n[`Properties.setProperties(properties)`](/apps-script/reference/properties/properties#setProperties(Object)).\nEach key-value pair of the object in the parameter is stored as a separate\nproperty: \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Set multiple script properties in one call.\n const scriptProperties = PropertiesService.getScriptProperties();\n scriptProperties.setProperties({\n 'cow': 'moo',\n 'sheep': 'baa',\n 'chicken': 'cluck'\n });\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nReading data\n------------\n\nTo retrieve a single value that you have previously saved, call\n[`Properties.getProperty(key)`](/apps-script/reference/properties/properties#getProperty(String)): \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Get the value for the user property 'DISPLAY_UNITS'.\n const userProperties = PropertiesService.getUserProperties();\n const units = userProperties.getProperty('DISPLAY_UNITS');\n console.log('values of units %s', units);\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nTo retrieve all values in the current property store, call\n[`Properties.getProperties()`](/apps-script/reference/properties/properties#getProperties()): \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Get multiple script properties in one call, then log them all.\n const scriptProperties = PropertiesService.getScriptProperties();\n const data = scriptProperties.getProperties();\n for (const key in data) {\n console.log('Key: %s, Value: %s', key, data[key]);\n }\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nModifying data\n--------------\n\nThe methods `getProperty()` and `getProperties()` return a copy of the stored\ndata, not a live view, so changing the returned object will not update the value\nin the property store. To update the data in the store, simply save it again: \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Change the unit type in the user property 'DISPLAY_UNITS'.\n const userProperties = PropertiesService.getUserProperties();\n let units = userProperties.getProperty('DISPLAY_UNITS');\n units = 'imperial'; // Only changes local value, not stored value.\n userProperties.setProperty('DISPLAY_UNITS', units); // Updates stored value.\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nDeleting data\n-------------\n\nTo delete a single value, call\n[`Properties.deleteProperty(key)`](/apps-script/reference/properties/properties#deleteProperty(String)): \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Delete the user property 'DISPLAY_UNITS'.\n const userProperties = PropertiesService.getUserProperties();\n userProperties.deleteProperty('DISPLAY_UNITS');\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nTo delete all properties in the current store, call\n[`Properties.deleteAllProperties()`](/apps-script/reference/properties/properties#deleteAllProperties()): \nservice/propertyService.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/service/propertyService.gs) \n\n```javascript\ntry {\n // Get user properties in the current script.\n const userProperties = PropertiesService.getUserProperties();\n // Delete all user properties in the current script.\n userProperties.deleteAllProperties();\n} catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with error %s', err.message);\n}\n```\n\nManage script properties manually\n---------------------------------\n\nYou can manually add up to fifty custom properties, as strings in key-value\npairs, from the project settings page. To add more than fifty properties, you\nneed to add them programmatically using the methods described above in\n[Saving data](#saving-data).\nWhen you set script properties from the project settings page, you can't\nreference script variables.\n\n### Add script properties\n\n1. Open your Apps Script project.\n2. At the left, click **Project Settings** .\n3. To add the first property, under **Script Properties** click **Add script property**.\n4. To add second and subsequent properties, under **Script Properties** click **Edit script properties** \\\u003e **Add script property**.\n5. For **Property**, enter the key name.\n6. For **Value**, enter the value for the key.\n7. (Optional) To add more properties, click **Add script property**.\n8. Click **Save script properties**.\n\n### Edit script properties\n\n1. Open your Apps Script project.\n2. At the left, click **Project Settings** .\n3. Under **Script Properties** , click **Edit script properties**.\n4. Make changes to the key name and key value for each property you want to change.\n5. Click **Save script properties**.\n\n### Delete script properties\n\n1. Open your Apps Script project.\n2. At the left, click **Project Settings** .\n3. Under **Script Properties** , click **Edit script properties**.\n4. Next to the property that you want to delete, click Remove close.\n5. Click **Save script properties**."]]