-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7fed807
commit 443341e
Showing
5 changed files
with
180 additions
and
175 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,77 +7,78 @@ | |
</div> | ||
|
||
|
||
# SettingsService | ||
# SheetSchema | ||
|
||
<div id="badges" align="left"> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SettingsService" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SettingsService" alt="License"></a> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SheetSchema" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SheetSchema" alt="License"></a> | ||
<a href="https://github.com/google/clasp"><img src="https://img.shields.io/badge/built%20with-clasp-4285f4.svg" alt="clasp"></a> | ||
</div> | ||
|
||
**SettingsService** работи подобно на [**PropertiesService**](https://developers.google.com/apps-script/reference/properties), но с подобрени възможности. | ||
**SheetSchema** е библиотека за скриптове на Google Apps, която осигурява лесен начин за работа със схеми на листове в Google Sheets. | ||
|
||
Настоящата модификация намалява натоварването върху системните лимити при четене и запис на свойства. | ||
Това се постига чрез паралелно съхранение на данни в [**CacheService**](https://developers.google.com/apps-script/reference/cache). | ||
Тя ви позволява да дефинирате, вмъквате, извличате и управлявате схеми в Google Sheets, което улеснява поддържането на структурирани данни. | ||
|
||
__Внимание!__ Използването на този сервис може да увеличи времето за изпълнение на скрипта. | ||
|
||
|
||
## Инсталация | ||
|
||
1. Отворете своя проект в [Google Apps Script Dashboard](https://script.google.com/). | ||
2. Копирайте съдържанието на файла [settings.js](../../src/settings.js) и го поставете в нов файл във вашия проект в Google Apps Script. | ||
2. Копирайте съдържанието на файла [sheet-schema.js](../../src/sheet-schema.js) и го поставете в нов файл във вашия проект в Google Apps Script. | ||
|
||
|
||
## Употреба | ||
|
||
### Получаване на инстанция на настройките | ||
Ето няколко примера за използване на SheetSchema: | ||
|
||
Получете настройки за документ, сценарий или потребител: | ||
### Добавяне на схема | ||
|
||
```javascript | ||
// Настройки на документа | ||
const documentSettings = SettingsService.getDocumentSettings(); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const fields = [„time“, null, { name: „id“ } ]; | ||
const schema = SheetSchema.insertSchema(sheet, fields); | ||
|
||
// Настройки на сценария | ||
const scriptSettings = SettingsService.getScriptSettings(); | ||
|
||
// Настройки на потребителя | ||
const userSettings = SettingsService.getUserSettings(); | ||
console.log(schema); | ||
``` | ||
|
||
### Запазване на данни | ||
|
||
Използвайте методи или пълномощни за запазване на данни: | ||
### Извличане на схема | ||
|
||
```javascript | ||
// Използване на метода | ||
scriptSettings.setProperty('email', '[email protected]'); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
|
||
// Използване на прокси | ||
scriptSettings.email = '[email protected]'; | ||
console.log(schema); | ||
``` | ||
|
||
### Извличане на данни | ||
### Извличане на поле по индекс на колона | ||
|
||
```javascript | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
const field = schema.getFieldByIndex(0); | ||
|
||
console.log(field); | ||
``` | ||
|
||
Използвайте методи или пълномощни за извличане на данни: | ||
### Получаване на поле по име | ||
|
||
```javascript | ||
// Използване на метода | ||
const email = scriptSettings.getProperty('email'); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
const field = schema.getFieldByName('time'); | ||
|
||
// Използване на прокси | ||
const email = scriptSettings.email; | ||
console.log(field); | ||
``` | ||
|
||
### Изтриване на схема | ||
|
||
## Задачи | ||
```javascript | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const result = SheetSchema.removeSchema(sheet); | ||
|
||
- [ ] Създаване на метод `settings.setProperties(properties, deleteAllOthers)`. | ||
- [ ] Създаване на метод `settings.getKeys()`. | ||
- [ ] Създаване на метод `settings.getProperties()`. | ||
- [ ] Създаване на метод `settings.deleteAllProperties()`. | ||
- [ ] Използвайте рекурсивно пълномощно, за да проследявате промените в дървото на обектите в `settings._values`, като това трябва да създаде и йерархия от обекти, напр: `settings._values.prop1.m1.m2 = 5;`. | ||
console.log(result); | ||
``` | ||
|
||
|
||
## Принос | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,77 +7,78 @@ | |
</div> | ||
|
||
|
||
# SettingsService | ||
# SheetSchema | ||
|
||
<div id="badges" align="left"> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SettingsService" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SettingsService" alt="License"></a> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SheetSchema" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SheetSchema" alt="License"></a> | ||
<a href="https://github.com/google/clasp"><img src="https://img.shields.io/badge/built%20with-clasp-4285f4.svg" alt="clasp"></a> | ||
</div> | ||
|
||
**SettingsService** funktioniert ähnlich wie [**PropertiesService**](https://developers.google.com/apps-script/reference/properties), jedoch mit erweiterten Möglichkeiten. | ||
**SheetSchema** ist eine Google Apps Script-Bibliothek, die eine einfache Möglichkeit bietet, mit Sheet-Schemata in Google Sheets zu arbeiten. | ||
|
||
Die aktuelle Modifikation reduziert die Belastung der Systemgrenzen beim Lesen und Schreiben von Eigenschaften. | ||
Dies wird durch die parallele Speicherung von Daten im [**CacheService**](https://developers.google.com/apps-script/reference/cache) erreicht. | ||
Sie ermöglicht das Definieren, Einfügen, Extrahieren und Verwalten von Schemata in Google Sheets und erleichtert so die Pflege strukturierter Daten. | ||
|
||
__Achtung!__ Die Verwendung dieses Dienstes kann die Ausführungszeit des Skripts verlängern. | ||
|
||
|
||
## Installation | ||
|
||
1. Öffnen Sie Ihr Projekt im [Google Apps Script Dashboard](https://script.google.com/). | ||
2. Kopieren Sie den Inhalt der Datei [settings.js](../../src/settings.js) und fügen Sie ihn in eine neue Datei in Ihrem Google Apps Script-Projekt ein. | ||
2. Kopieren Sie den Inhalt der Datei [sheet-schema.js](../../src/sheet-schema.js) und fügen Sie ihn in eine neue Datei in Ihrem Google Apps Script-Projekt ein. | ||
|
||
|
||
## Verwendung | ||
|
||
### Instanz der Einstellungen abrufen | ||
Hier sind einige Beispiele für die Verwendung von SheetSchema: | ||
|
||
Rufen Sie Einstellungen für ein Dokument, ein Skript oder einen Benutzer ab: | ||
### Schema einfügen | ||
|
||
```javascript | ||
// Dokumenteinstellungen | ||
const documentSettings = SettingsService.getDocumentSettings(); | ||
const Blatt = SpreadsheetApp.getActiveSheet(); | ||
const fields = [ 'time', null, { name: 'id' } ]; | ||
const schema = SheetSchema.insertSchema(sheet, fields); | ||
|
||
// Szenarioeinstellungen | ||
const scriptSettings = SettingsService.getScriptSettings(); | ||
|
||
// Benutzereinstellungen | ||
const userSettings = SettingsService.getUserSettings(); | ||
console.log(schema); | ||
``` | ||
|
||
### Speichern von Daten | ||
|
||
Verwenden Sie Methoden oder Proxys, um Daten zu speichern: | ||
### Schema abrufen | ||
|
||
```javascript | ||
// Anwendung der Methode | ||
scriptSettings.setProperty('email', '[email protected]'); | ||
const Blatt = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
|
||
// Mit einem Proxy | ||
scriptSettings.email = '[email protected]'; | ||
console.log(schema); | ||
``` | ||
|
||
### Datenabruf | ||
### Abrufen von Feld nach Spaltenindex | ||
|
||
```javascript | ||
const Blatt = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
const field = schema.getFieldByIndex(0); | ||
|
||
console.log(field); | ||
``` | ||
|
||
Verwenden Sie Methoden oder Proxys zum Abrufen von Daten: | ||
### Feld nach Name abrufen | ||
|
||
```javascript | ||
// Anwendung der Methode | ||
const email = scriptSettings.getProperty('email'); | ||
const Blatt = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(Blatt); | ||
const field = schema.getFieldByName('time'); | ||
|
||
// Mit einem Proxy | ||
const email = scriptSettings.email; | ||
console.log(field); | ||
``` | ||
|
||
### Löschen des Schemas | ||
|
||
## Aufgaben | ||
```javascript | ||
const Blatt = SpreadsheetApp.getActiveSheet(); | ||
const result = SheetSchema.removeSchema(sheet); | ||
|
||
- [ ] Erstellen Sie eine Methode `settings.setProperties(properties, deleteAllOthers)`. | ||
- [ ] Erstelle eine Methode `settings.getKeys()`. | ||
- [ ] Erstelle Methode `settings.getProperties()`. | ||
- [ ] Erstelle eine Methode `settings.deleteAllProperties()`. | ||
- [ ] Verwenden Sie einen rekursiven Proxy, um Änderungen am Objektbaum in `settings._values` zu verfolgen, dies sollte auch eine Hierarchie von Objekten erstellen, z.B.: `settings._values.prop1.m1.m2 = 5;`. | ||
console.log(result); | ||
``` | ||
|
||
|
||
## Beitrag | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,77 +7,78 @@ | |
</div> | ||
|
||
|
||
# SettingsService | ||
# SheetSchema | ||
|
||
<div id="badges" align="left"> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SettingsService" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SettingsService" alt="License"></a> | ||
<img src="https://img.shields.io/github/v/release/MaksymStoianov/SheetSchema" alt="Release"> | ||
<a href="LICENSE.md"><img src="https://img.shields.io/github/license/MaksymStoianov/SheetSchema" alt="License"></a> | ||
<a href="https://github.com/google/clasp"><img src="https://img.shields.io/badge/built%20with-clasp-4285f4.svg" alt="clasp"></a> | ||
</div> | ||
|
||
**SettingsService** works similarly to [**PropertiesService**](https://developers.google.com/apps-script/reference/properties) but with enhanced capabilities. | ||
**SheetSchema** is a Google Apps Script library that provides an easy way to work with sheet schemas in Google Sheets. | ||
|
||
The current modification reduces the load on system limits when reading and writing properties. | ||
This is achieved through parallel data storage in [**CacheService**](https://developers.google.com/apps-script/reference/cache). | ||
It allows you to define, insert, extract and manage schemas in Google Sheets, making it easy to maintain structured data. | ||
|
||
__Note!__ Using this service may increase script execution time. | ||
|
||
|
||
## Installation | ||
|
||
1. Open your project in the [Google Apps Script Dashboard](https://script.google.com/). | ||
2. Copy the contents of the [settings.js](../../src/settings.js) file and paste it into a new file in your Google Apps Script project. | ||
2. Copy the contents of the [sheet-schema.js](../../src/sheet-schema.js) file and paste it into a new file in your Google Apps Script project. | ||
|
||
|
||
## Usage | ||
|
||
### Getting a settings instance | ||
Here are some examples of how to use SheetSchema: | ||
|
||
Retrieve settings for a document, script, or user: | ||
### Insert Schema | ||
|
||
```javascript | ||
// Document settings | ||
const documentSettings = SettingsService.getDocumentSettings(); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const fields = [ 'time', null, { name: 'id' } ]; | ||
const schema = SheetSchema.insertSchema(sheet, fields); | ||
|
||
// Script settings | ||
const scriptSettings = SettingsService.getScriptSettings(); | ||
|
||
// User settings | ||
const userSettings = SettingsService.getUserSettings(); | ||
console.log(schema); | ||
``` | ||
|
||
### Saving data | ||
|
||
Use methods or proxies to save data: | ||
### Retrieve schema | ||
|
||
```javascript | ||
// Using the method | ||
scriptSettings.setProperty('email', '[email protected]'); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
|
||
// Using a proxy | ||
scriptSettings.email = '[email protected]'; | ||
console.log(schema); | ||
``` | ||
|
||
### Data retrieval | ||
### Retrieve field by column index | ||
|
||
```javascript | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
const field = schema.getFieldByIndex(0); | ||
|
||
console.log(field); | ||
``` | ||
|
||
Use methods or proxies to retrieve data: | ||
### Get field by name | ||
|
||
```javascript | ||
// Using the method | ||
const email = scriptSettings.getProperty('email'); | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const schema = SheetSchema.getSchemaBySheet(sheet); | ||
const field = schema.getFieldByName('time'); | ||
|
||
// Using a proxy | ||
const email = scriptSettings.email; | ||
console.log(field); | ||
``` | ||
|
||
### Deleting schema | ||
|
||
## Tasks | ||
```javascript | ||
const sheet = SpreadsheetApp.getActiveSheet(); | ||
const result = SheetSchema.removeSchema(sheet); | ||
|
||
- [ ] Create a method `settings.setProperties(properties, deleteAllOthers)`. | ||
- [ ] Create a method `settings.getKeys()`. | ||
- [ ] Create method `settings.getProperties()`. | ||
- [ ] Create a method `settings.deleteAllProperties()`. | ||
- [ ] Use a recursive proxy to track changes to the object tree in `settings._values`, this should also create a hierarchy of objects, e.g.: `settings._values.prop1.m1.m2 = 5;`. | ||
console.log(result); | ||
``` | ||
|
||
|
||
## Contribution | ||
|
Oops, something went wrong.