From 373e6e0a959d075f184c64992f5c7bceea3d3dbb Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 17:20:58 +0100 Subject: [PATCH 1/3] docs: let the README translation check skip right-to-left wrappers An Arabic translation wraps its prose in
blocks, so the translation note may follow such a wrapper line instead of the switcher directly. Headings inside the wrappers keep counting as before. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- scripts/check-readme-translations.mjs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/scripts/check-readme-translations.mjs b/scripts/check-readme-translations.mjs index 06908012..16dd1c42 100644 --- a/scripts/check-readme-translations.mjs +++ b/scripts/check-readme-translations.mjs @@ -11,6 +11,10 @@ * - the version in its translation note, the blockquote right after the * switcher, differs from the `version` in package.json. * + * A right-to-left translation wraps its prose in `
` blocks. + * Those wrapper lines are skipped when looking for the note, and the headings + * inside them still count, since they stay `##`/`###` lines of their own. + * * It does not compare wording: a translation can be out of date and still * pass. The version note is what says which README.md it was made from. * @@ -74,6 +78,13 @@ function proseLines(text) { return lines; } +/** + * Whether the line only opens or closes a right-to-left wrapper block. + */ +function isRtlWrapper(line) { + return /^]*\bdir="rtl"[^>]*>$/.test(line.trim()) || line.trim() === "
"; +} + function headingCount(lines) { return lines.filter((line) => /^#{2,3} \S/.test(line)).length; } @@ -108,7 +119,9 @@ for (const { code } of LANGUAGES.slice(1)) { if (switcherAt === -1) { problems.push(`${file}: the language switcher is missing or differs from the expected line`); } else { - const note = lines.slice(switcherAt + 1).find((line) => line.trim() !== ""); + const note = lines + .slice(switcherAt + 1) + .find((line) => line.trim() !== "" && !isRtlWrapper(line)); const noted = note?.startsWith(">") ? /\b\d+\.\d+\.\d+\b/.exec(note)?.[0] : undefined; From 0967657eb71360ecfd9f886437c589b4eb060379 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 17:33:12 +0100 Subject: [PATCH 2/3] docs: add README translations (ko, zh-TW, it, pl, tr, nl, id, vi, ar, cs) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translate the current README.md into Korean, Traditional Chinese (Taiwan), Italian, Polish, Turkish, Dutch, Indonesian, Vietnamese, Arabic and Czech. The switcher in every README now lists 19 languages, and the Simplified Chinese entry is labelled 简体中文 next to 繁體中文. The Arabic README wraps its prose in right-to-left blocks and keeps code, badges and the switcher left to right. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- CONTRIBUTING.md | 11 +- README.ar.md | 336 ++++++++++++++++++++++++++ README.cs.md | 292 ++++++++++++++++++++++ README.de.md | 2 +- README.es.md | 2 +- README.fr.md | 2 +- README.id.md | 293 ++++++++++++++++++++++ README.it.md | 295 ++++++++++++++++++++++ README.ja.md | 2 +- README.ko.md | 263 ++++++++++++++++++++ README.md | 2 +- README.nl.md | 294 ++++++++++++++++++++++ README.pl.md | 294 ++++++++++++++++++++++ README.pt.md | 2 +- README.ru.md | 2 +- README.tr.md | 297 +++++++++++++++++++++++ README.uk.md | 2 +- README.vi.md | 294 ++++++++++++++++++++++ README.zh-TW.md | 263 ++++++++++++++++++++ README.zh.md | 2 +- scripts/check-readme-translations.mjs | 12 +- 21 files changed, 2949 insertions(+), 13 deletions(-) create mode 100644 README.ar.md create mode 100644 README.cs.md create mode 100644 README.id.md create mode 100644 README.it.md create mode 100644 README.ko.md create mode 100644 README.nl.md create mode 100644 README.pl.md create mode 100644 README.tr.md create mode 100644 README.vi.md create mode 100644 README.zh-TW.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2778e822..f15e8d4b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -182,14 +182,19 @@ The project uses [Vitest](https://vitest.dev/) for testing. ### README Translations -`README.md` is the authoritative version. `README.uk.md`, `README.ru.md`, `README.de.md`, `README.fr.md`, -`README.es.md`, `README.pt.md`, `README.ja.md` and `README.zh.md` are AI-assisted translations of it, and corrections -from native speakers are welcome as ordinary pull requests. +`README.md` is the authoritative version. The `README..md` files next to it are AI-assisted translations of it +into Ukrainian (`uk`), Russian (`ru`), German (`de`), French (`fr`), Spanish (`es`), Portuguese (`pt`), Italian (`it`), +Dutch (`nl`), Polish (`pl`), Czech (`cs`), Turkish (`tr`), Arabic (`ar`), Indonesian (`id`), Vietnamese (`vi`), +Japanese (`ja`), Korean (`ko`), Simplified Chinese (`zh`) and Traditional Chinese (`zh-TW`). Corrections from native +speakers are welcome as ordinary pull requests. - **Keep the shape**: every README carries the same language switcher under the banner, and every translation has the same `##`/`###` headings as `README.md`. Translate prose only; code blocks, function names, commands, package names, URLs and badges stay as they are. Ukrainian, Russian, German and French link to their own documentation under `//`; the other languages link to the English documentation. +- **Right-to-left languages**: the Arabic README wraps its prose in `
` … `
` blocks, + with a blank line inside each wrapper so GitHub still renders the Markdown. Code blocks, badges, the scripts table + and the switcher stay outside the wrappers, left to right; headings stay ordinary `##`/`###` lines. - **Sync translations with the source**: when a change to `README.md` is carried into the translations, update the version in the note under each switcher to the current `version` in `package.json`. - **The note goes stale on release, by design**: release-please bumps `package.json` but does not touch the diff --git a/README.ar.md b/README.ar.md new file mode 100644 index 00000000..d1d7103b --- /dev/null +++ b/README.ar.md @@ -0,0 +1,336 @@ + + +![شعار مشروع Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + الفنانة: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | **العربية** | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +
+ +> أُنجزت هذه الترجمة بمساعدة الذكاء الاصطناعي انطلاقًا من [README.md](README.md) للإصدار 2.1.1. النسخة المرجعية هي ملف README الإنجليزي؛ ونرحّب بالتصحيحات — راجع [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# أدوات مساعدة لمشاريع Google Apps Script™ + +
+ +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ +
+ + + +- [أدوات مساعدة لمشاريع Google Apps Script™](#أدوات-مساعدة-لمشاريع-google-apps-script) + - [نظرة عامة](#نظرة-عامة) + - [الميزات الرئيسية](#الميزات-الرئيسية) + - [مهارات وكلاء الذكاء الاصطناعي](#مهارات-وكلاء-الذكاء-الاصطناعي) + - [المتطلبات](#المتطلبات) + - [التثبيت](#التثبيت) + - [التوثيق](#التوثيق) + - [أمثلة الاستخدام](#أمثلة-الاستخدام) + - [التطوير](#التطوير) + - [السكربتات](#السكربتات) + - [الاختبار](#الاختبار) + - [بنية المشروع](#بنية-المشروع) + - [الدوال حسب الفئة](#الدوال-حسب-الفئة) + - [المساهمة](#المساهمة) + - [الدعم](#الدعم) + - [خارطة الطريق](#خارطة-الطريق) + - [سجل التغييرات](#سجل-التغييرات) + - [الترخيص](#الترخيص) + + +## نظرة عامة + +**@bootgs/utils** مكتبة أدوات مساعدة بلغة TypeScript صُمّمت خصيصًا لـ **Google Apps Script**. تجمع في حزمة واحدة، +موثّقة جيدًا ومختبرة بالكامل، الدوال المساعدة التي ينتهي كل مشروع GAS بكتابتها يدويًا — التعامل مع جداول البيانات +وتدوين A1، والتحقق من الأنواع والقيم (`isX`/`nonX`/`requireX`)، وتحويلات السلاسل النصية والمصفوفات، والاستثناءات +ذات الأنواع المحددة، وغير ذلك. + +## الميزات الرئيسية + +- **مبنية لـ Google Apps Script** — مصمّمة حول بيئة تشغيل GAS وقيودها، وليست مقتبسة من مكتبة Node.js عامة. +- **تغطية واسعة** — دوال مساعدة لجداول البيانات وواجهة المستخدم والشبكة وAdmin SDK، إلى جانب أدوات عامة للسلاسل + النصية والمصفوفات والكائنات. +- **TypeScript أولًا** — تأتي كل دالة مع تعريفات أنواع كاملة للإكمال التلقائي في بيئة التطوير والأمان وقت الترجمة. +- **مختبرة** — تغطيها مجموعة اختبارات وحدات مكتوبة بـ Vitest. +- **توثيق مرجعي مترابط** — كل نوع من أنواع Google Apps Script المستخدمة في الواجهة البرمجية يرتبط مباشرةً بتوثيقه + الرسمي. +- **معالجة متّسقة للأخطاء** — تسلسل هرمي مخصص لفئات الاستثناءات يحلّ محل الأخطاء المرمية بشكل عشوائي. + +## مهارات وكلاء الذكاء الاصطناعي + +للفرق التي تستخدم وكيل برمجة بالذكاء الاصطناعي (Claude Code وGemini CLI وغيرهما)، يقدّم المستودع +[bootgs/skills](https://github.com/bootgs/skills) مهارة وكيل (Agent Skill) باسم +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) توثّق هذه المكتبة لمثل هذه +الوكلاء، بما في ذلك اصطلاح التحقق `isX`/`nonX`/`requireX`، ودوال تدوين A1 والأوراق، ودوال السلاسل النصية والأرقام +والمصفوفات، والاستثناءات ذات الأنواع المحددة، ودوال HTML وJSON والمسارات. + +التثبيت باستخدام Claude Code: + +
+ +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +
+ +التثبيت باستخدام واجهة الأوامر `npx skills` التي تدعم عدة وكلاء: + +
+ +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +
+ +بعد التثبيت، يطبّق الوكيل المهارة تلقائيًا عندما تتعلق المهمة بهذه المكتبة. + +## المتطلبات + +- [Node.js](https://nodejs.org/) الإصدار v22.14.0 أو أحدث +- [npm](https://www.npmjs.com/) (أو مدير حزم آخر لـ Node، مثل pnpm) + +## التثبيت + +ثبّت الحزمة عبر npm: + +
+ +```bash +npm install @bootgs/utils +``` + +
+ +## التوثيق + +التوثيق الكامل منشور على **** (بالإنجليزية): أدلة، وشروحات لكل وحدة، والمرجع +الكامل للدوال. يوجد مصدره في [`docs/writerside/`](docs/writerside/) ويُعاد بناؤه مع كل دفع (push) إلى `main`. + +ترتيب مقترح للقراءة: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — الخطوات الأولى +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — نظام التسمية + `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — التسلسل الهرمي للفئات وما الذي + يطلق كل استثناء +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — أي الدوال المساعدة ترتبط + بخدمة من خدمات Google، وما يعنيه ذلك للاختبار + +## أمثلة الاستخدام + +### العمل مع جداول البيانات + +إلحاق عدة صفوف من البيانات بكفاءة: + +
+ +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +
+ +### أدوات Admin SDK + +التحقق مما إذا كان المستخدم الحالي يملك صلاحيات إدارية: + +
+ +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +
+ +### تحليل تدوين A1 + +تحليل صيغ تدوين A1 المعقدة وتحويلها إلى كائنات منظّمة: + +
+ +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +
+ +## التطوير + +### السكربتات + +السكربتات التالية متاحة في `package.json`: + +
+ +| Script | الوصف | +| :------------------- | :------------------------------------------------------------ | +| `npm run build` | ينظّف المجلد `dist` ويترجم شيفرة TypeScript المصدرية. | +| `npm run dev` | يشغّل Vitest في وضع المراقبة. | +| `npm test` | يشغّل مجموعة الاختبارات كاملةً مرة واحدة. | +| `npm run type:check` | يتحقق من أنواع المشروع دون إنتاج مخرجات. | +| `npm run lint` | يفحص الشيفرة باستخدام ESLint. | +| `npm run lint:fix` | يفحص الشيفرة ويصلح تلقائيًا ما أمكن. | +| `npm run format` | يتحقق من التنسيق باستخدام Prettier. | +| `npm run format:fix` | ينسّق الشيفرة باستخدام Prettier. | +| `npm run prepare` | يُعدّ خطافات Git الخاصة بـ Husky (يعمل تلقائيًا بعد التثبيت). | + +
+ +### الاختبار + +يستخدم المشروع [Vitest](https://vitest.dev/) لاختبارات الوحدات. + +تشغيل المجموعة كاملةً مرة واحدة: + +
+ +```bash +npm test +``` + +
+ +أو تشغيلها في وضع المراقبة أثناء التطوير: + +
+ +```bash +npm run dev +``` + +
+ +## بنية المشروع + +
+ +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +
+ +## الدوال حسب الفئة + +انتقل المرجع الكامل للدوال إلى موقع التوثيق (بالإنجليزية)، الذي يُبنى من [`docs/writerside/`](docs/writerside/) +ويُنشر مع كل دفع (push) إلى `main`: + +**** + +| القسم | المحتوى | +| :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets وSlides وAdmin SDK وDrive وDocs وForms، وطلبات الشبكة، وفئات واجهة المستخدم المدمجة | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | فحص الأنواع والتحقق، ومعالجة السلاسل النصية والمصفوفات والكائنات، والتعامل مع JSON وHTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | فئات الاستثناءات ذات الأنواع المحددة وما الذي يطلق كلًّا منها | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | مسارات الملفات وعناوين URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | لبنات بناء مشتركة | + +إلى جانب المرجع، يضم الموقع الأدلة التي لم تتسع لها الجداول: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) يشرح نظام +`isX`/`nonX`/`requireX`/`requireNonX` في مكان واحد، و[exception handling](https://bootgs.github.io/utils/exception-handling.html) +يعرض التسلسل الهرمي للفئات، و[the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +يوضّح أي الدوال المساعدة ترتبط بخدمة من خدمات Google، وما كلفة ذلك، وما يعنيه للاختبار. + +## المساهمة + +نرحّب بالمساهمات. راجع [CONTRIBUTING.md](CONTRIBUTING.md) للاطلاع على الدليل الكامل. باختصار: + +1. أنشئ نسخة (fork) من المستودع وفرعًا للميزة أو الإصلاح الذي تعمل عليه. +2. أضف اختبارات أو حدّثها لتغطية تغييراتك. +3. شغّل `npm run lint` و`npm run format` قبل الإيداع (commit). +4. لا تعدّل `CHANGELOG.md` يدويًا — فهو يُولَّد تلقائيًا بواسطة [release-please](https://github.com/googleapis/release-please). +5. افتح طلب دمج (pull request) يصف ما الذي تغيّر ولماذا. + +اتبع أسلوب الشيفرة واصطلاحات التسمية المعتمدة. راجع [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) للاطلاع على قواعد +المجتمع. + +## الدعم + +- للإبلاغ عن الأخطاء أو طلب الميزات، ابحث عن [issue](https://github.com/bootgs/utils/issues) أو افتح واحدة على + GitHub. +- لمعرفة أحدث التغييرات، راجع [سجل التغييرات](CHANGELOG.md). +- للإبلاغ عن ثغرة أمنية، اتبع [سياسة الأمان](SECURITY.md) بدلًا من فتح issue عامة. +- لدعم استمرار التطوير، راجع [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## خارطة الطريق + +ما هو مخطط له أو قيد التنفيذ أو منجز موجود على [لوحة المشروع](https://github.com/users/MaksymStoianov/projects/2/views/2)، +المبنية من متتبّع المشكلات نفسه. لا توجد وثيقة خارطة طريق منفصلة قد تتخلف عنه: لاقتراح أمر ما، افتح +[issue](https://github.com/bootgs/utils/issues). + +## سجل التغييرات + +للاطلاع على قائمة مفصّلة بالتغييرات حسب الإصدار، راجع [CHANGELOG.md](CHANGELOG.md). + +## الترخيص + +هذا المشروع مرخّص بموجب Apache License 2.0. راجع [LICENSE](LICENSE) لمزيد من التفاصيل. + +رسم الشعار ليس جزءًا من ذلك الترخيص. إنه من أعمال مؤلفته، ويجوز إعادة استخدامه دون تعديل مع ذكر اسم المؤلفة وربط +الإشارة إليها برابط، ويخضع لـ [docs/assets/images/README.md](docs/assets/images/README.md). + +## العلامات التجارية + +Google Apps Script وGoogle Sheets وGoogle Slides وGoogle Docs وGoogle Forms وGoogle Drive علامات تجارية مملوكة لشركة +Google LLC. هذا المشروع مكتبة مستقلة، وهو غير تابع لشركة Google LLC ولا معتمد أو مموّل منها، وتُستخدم العلامات +التجارية فقط لوصف ما تعمل معه المكتبة. + +
diff --git a/README.cs.md b/README.cs.md new file mode 100644 index 00000000..7704d57d --- /dev/null +++ b/README.cs.md @@ -0,0 +1,292 @@ + + +![Banner projektu Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Umělkyně: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | **Čeština** | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Tento překlad vznikl s pomocí AI z [README.md](README.md) pro verzi 2.1.1. Referenční verzí je anglické README; opravy jsou vítány — viz [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Utility pro Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Utility pro Google Apps Script™](#utility-pro-google-apps-script) + - [Přehled](#přehled) + - [Hlavní funkce](#hlavní-funkce) + - [Skills pro AI agenty](#skills-pro-ai-agenty) + - [Požadavky](#požadavky) + - [Instalace](#instalace) + - [Dokumentace](#dokumentace) + - [Příklady použití](#příklady-použití) + - [Vývoj](#vývoj) + - [Skripty](#skripty) + - [Testování](#testování) + - [Struktura projektu](#struktura-projektu) + - [Funkce podle kategorií](#funkce-podle-kategorií) + - [Jak přispět](#jak-přispět) + - [Podpora](#podpora) + - [Plán vývoje](#plán-vývoje) + - [Seznam změn](#seznam-změn) + - [Licence](#licence) + + +## Přehled + +**@bootgs/utils** je knihovna utilit v TypeScriptu vytvořená přímo pro **Google Apps Script**. Spojuje pomocné funkce, +které si každý projekt GAS nakonec píše ručně — práci s tabulkami a notací A1, validaci typů a hodnot +(`isX`/`nonX`/`requireX`), transformace řetězců a polí, typované výjimky a další — do jediného dobře zdokumentovaného +a plně otestovaného balíčku. + +## Hlavní funkce + +- **Vytvořeno pro Google Apps Script** — navrženo podle běhového prostředí GAS a jeho omezení, nikoli převzato + z obecné knihovny pro Node.js. +- **Široké pokrytí** — pomocné funkce pro tabulky, UI, síť a Admin SDK vedle univerzálních utilit pro řetězce, pole + a objekty. +- **TypeScript na prvním místě** — každá funkce má úplné typové definice pro automatické doplňování v IDE a kontrolu + při kompilaci. +- **Otestováno** — pokryto sadou jednotkových testů ve Vitestu. +- **Propojená referenční dokumentace** — každý typ Google Apps Script použitý v API odkazuje přímo na svou oficiální + dokumentaci. +- **Jednotné zpracování chyb** — vlastní hierarchie tříd výjimek nahrazuje nahodile vyhazované chyby. + +## Skills pro AI agenty + +Pro týmy, které používají AI agenta pro programování (Claude Code, Gemini CLI a další), nabízí repozitář +[bootgs/skills](https://github.com/bootgs/skills) Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils), který tuto knihovnu +takovým agentům popisuje, včetně konvence validace `isX`/`nonX`/`requireX`, pomocných funkcí pro notaci A1 a listy, +pro řetězce, čísla a pole, typovaných výjimek a pomocných funkcí pro HTML, JSON a cesty. + +Instalace v Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Instalace pomocí CLI `npx skills`, které podporuje více agentů: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Po instalaci agent skill použije automaticky, jakmile se úloha týká této knihovny. + +## Požadavky + +- [Node.js](https://nodejs.org/) v22.14.0 nebo novější +- [npm](https://www.npmjs.com/) (nebo jiný správce balíčků pro Node, např. pnpm) + +## Instalace + +Nainstalujte balíček přes npm: + +```bash +npm install @bootgs/utils +``` + +## Dokumentace + +Úplná dokumentace je zveřejněna na **** (v angličtině): +průvodci, procházky jednotlivými moduly a kompletní reference funkcí. Její zdroj je v +[`docs/writerside/`](docs/writerside/) a znovu se sestavuje při každém push do `main`. + +Doporučené pořadí čtení: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — první kroky +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — + schéma pojmenování `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — hierarchie + tříd a co kterou výjimku vyvolává +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — které + pomocné funkce jsou vázány na službu Google a co to znamená pro testování + +## Příklady použití + +### Práce s listy + +Efektivní přidání více řádků dat: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Utility pro Admin SDK + +Ověření, zda má aktuální uživatel administrátorská oprávnění: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### Parsování notace A1 + +Rozbor složitých zápisů v notaci A1 do strukturovaných objektů: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Vývoj + +### Skripty + +V `package.json` jsou k dispozici tyto skripty: + +| Skript | Popis | +| :------------------- | :-------------------------------------------------------------- | +| `npm run build` | Vyčistí adresář `dist` a zkompiluje zdrojový kód v TypeScriptu. | +| `npm run dev` | Spustí Vitest v režimu sledování změn. | +| `npm test` | Jednou spustí celou sadu testů. | +| `npm run type:check` | Zkontroluje typy projektu bez generování výstupu. | +| `npm run lint` | Zkontroluje kód pomocí ESLintu. | +| `npm run lint:fix` | Zkontroluje kód a automaticky opraví, co lze. | +| `npm run format` | Zkontroluje formátování pomocí Prettieru. | +| `npm run format:fix` | Naformátuje kód pomocí Prettieru. | +| `npm run prepare` | Nastaví Git hooky Husky (spouští se automaticky po instalaci). | + +### Testování + +Projekt používá pro jednotkové testy [Vitest](https://vitest.dev/). + +Jednorázové spuštění celé sady: + +```bash +npm test +``` + +Nebo spuštění v režimu sledování změn během vývoje: + +```bash +npm run dev +``` + +## Struktura projektu + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Funkce podle kategorií + +Úplná reference funkcí se přesunula na web s dokumentací, který se sestavuje z +[`docs/writerside/`](docs/writerside/) a zveřejňuje při každém push do `main`: + +**** + +| Oddíl | Obsah | +| :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, síťové požadavky a vestavěné třídy UI | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Kontrola typů a validace, práce s řetězci, poli a objekty, zpracování JSON a HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Typované třídy výjimek a co kterou z nich vyvolává | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Cesty k souborům a URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Sdílené stavební prvky | + +Kromě reference obsahuje web i průvodce, které se do tabulek nevešly: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) vysvětluje +schéma `isX`/`nonX`/`requireX`/`requireNonX` na jednom místě, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) popisuje hierarchii +tříd a [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +vysvětluje, které pomocné funkce jsou vázány na službu Google, co to stojí a co to znamená pro testování. + +## Jak přispět + +Příspěvky jsou vítány. Úplný návod najdete v [CONTRIBUTING.md](CONTRIBUTING.md). Ve zkratce: + +1. Vytvořte fork repozitáře a založte větev pro novou funkci nebo opravu chyby. +2. Přidejte nebo aktualizujte testy, které pokrývají vaše změny. +3. Před commitem spusťte `npm run lint` a `npm run format`. +4. Needitujte `CHANGELOG.md` ručně — generuje ho automaticky [release-please](https://github.com/googleapis/release-please). +5. Otevřete pull request s popisem toho, co se změnilo a proč. + +Dodržujte stávající styl kódu a konvence pojmenování. Pravidla komunity najdete v +[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). + +## Podpora + +- Chyby nebo požadavky na nové funkce vyhledejte nebo nahlaste jako [issue](https://github.com/bootgs/utils/issues) + na GitHubu. +- Nedávné změny najdete v [seznamu změn](CHANGELOG.md). +- Bezpečnostní zranitelnost nahlaste podle [bezpečnostní politiky](SECURITY.md), nikoli ve veřejném issue. +- Chcete-li podpořit další vývoj, navštivte [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Plán vývoje + +Co je naplánováno, rozpracováno nebo hotovo, najdete na [nástěnce projektu](https://github.com/users/MaksymStoianov/projects/2/views/2), +která vychází přímo ze seznamu issues. Neexistuje žádný samostatný dokument s plánem, který by se s ní mohl rozcházet: +chcete-li něco navrhnout, otevřete [issue](https://github.com/bootgs/utils/issues). + +## Seznam změn + +Podrobný seznam změn podle verzí najdete v [CHANGELOG.md](CHANGELOG.md). + +## Licence + +Tento projekt je licencován pod licencí Apache License 2.0. Podrobnosti najdete v [LICENSE](LICENSE). + +Ilustrace banneru není součástí této licence. Je dílem své autorky, smí být znovu použita bez úprav, pokud je autorka +uvedena a uvedení odkazuje na její stránky, a vztahuje se na ni [docs/assets/images/README.md](docs/assets/images/README.md). + +## Ochranné známky + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms a Google Drive jsou ochranné známky +společnosti Google LLC. Tento projekt je nezávislá knihovna. Není přidružen ke společnosti Google LLC, není jí +schvalován ani sponzorován a ochranné známky se používají pouze k popisu toho, s čím knihovna pracuje. diff --git a/README.de.md b/README.de.md index 8dcf36f0..4c23c72a 100644 --- a/README.de.md +++ b/README.de.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Diese Übersetzung wurde mit KI-Unterstützung aus [README.md](README.md) für Version 2.1.1 erstellt. Maßgeblich ist die englische README; Korrekturen sind willkommen — siehe [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.es.md b/README.es.md index ae0cba43..b8daff73 100644 --- a/README.es.md +++ b/README.es.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Esta traducción se hizo con ayuda de IA a partir de [README.md](README.md) para la versión 2.1.1. La versión de referencia es el README en inglés; las correcciones son bienvenidas — consulta [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.fr.md b/README.fr.md index 6066fca2..bcb37948 100644 --- a/README.fr.md +++ b/README.fr.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Cette traduction a été réalisée avec l'aide de l'IA à partir de [README.md](README.md) pour la version 2.1.1. Le README anglais fait foi ; les corrections sont les bienvenues — voir [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.id.md b/README.id.md new file mode 100644 index 00000000..671a62da --- /dev/null +++ b/README.id.md @@ -0,0 +1,293 @@ + + +![Banner proyek Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Seniman: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | **Bahasa Indonesia** | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Terjemahan ini dibuat dengan bantuan AI dari [README.md](README.md) untuk versi 2.1.1. Versi acuannya adalah README berbahasa Inggris; koreksi sangat kami harapkan — lihat [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Utilitas untuk Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Utilitas untuk Google Apps Script™](#utilitas-untuk-google-apps-script) + - [Ikhtisar](#ikhtisar) + - [Fitur utama](#fitur-utama) + - [Skill untuk agen AI](#skill-untuk-agen-ai) + - [Persyaratan](#persyaratan) + - [Instalasi](#instalasi) + - [Dokumentasi](#dokumentasi) + - [Contoh penggunaan](#contoh-penggunaan) + - [Pengembangan](#pengembangan) + - [Skrip](#skrip) + - [Pengujian](#pengujian) + - [Struktur proyek](#struktur-proyek) + - [Fungsi per kategori](#fungsi-per-kategori) + - [Berkontribusi](#berkontribusi) + - [Dukungan](#dukungan) + - [Peta jalan](#peta-jalan) + - [Catatan perubahan](#catatan-perubahan) + - [Lisensi](#lisensi) + + +## Ikhtisar + +**@bootgs/utils** adalah pustaka utilitas TypeScript yang dibuat khusus untuk **Google Apps Script**. Pustaka ini +mengumpulkan fungsi bantu yang pada akhirnya selalu ditulis manual di setiap proyek GAS — manipulasi spreadsheet dan +notasi A1, validasi tipe dan nilai (`isX`/`nonX`/`requireX`), transformasi string dan array, exception bertipe, dan +lainnya — dalam satu paket yang terdokumentasi dengan baik dan teruji sepenuhnya. + +## Fitur utama + +- **Dibuat untuk Google Apps Script** — dirancang di sekitar runtime GAS beserta batasannya, bukan diadaptasi dari + pustaka Node.js generik. +- **Cakupan utilitas yang luas** — fungsi bantu untuk spreadsheet, UI, jaringan, dan Admin SDK, ditambah utilitas + serbaguna untuk string, array, dan objek. +- **Mengutamakan TypeScript** — setiap fungsi dilengkapi definisi tipe lengkap untuk pelengkapan otomatis di IDE dan + keamanan saat kompilasi. +- **Teruji** — dicakup oleh rangkaian unit test Vitest. +- **Dokumentasi referensi bertaut** — setiap tipe Google Apps Script yang dipakai di API tertaut langsung ke + dokumentasi resminya. +- **Penanganan error yang konsisten** — hierarki kelas exception khusus menggantikan error yang dilempar secara asal. + +## Skill untuk agen AI + +Bagi tim yang memakai agen pemrograman AI (Claude Code, Gemini CLI, dan lainnya), repositori +[bootgs/skills](https://github.com/bootgs/skills) menyediakan Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) yang mendokumentasikan +pustaka ini untuk agen tersebut, termasuk konvensi validasi `isX`/`nonX`/`requireX`, fungsi bantu untuk notasi A1 dan +sheet, fungsi bantu untuk string, angka, dan array, exception bertipe, serta fungsi bantu untuk HTML, JSON, dan path. + +Instal dengan Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Instal dengan CLI `npx skills`, yang mendukung berbagai agen: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Setelah terinstal, agen menerapkan skill ini secara otomatis ketika sebuah tugas melibatkan pustaka ini. + +## Persyaratan + +- [Node.js](https://nodejs.org/) v22.14.0 atau yang lebih baru +- [npm](https://www.npmjs.com/) (atau package manager Node lain, misalnya pnpm) + +## Instalasi + +Instal paket melalui npm: + +```bash +npm install @bootgs/utils +``` + +## Dokumentasi + +Dokumentasi lengkap diterbitkan di **** (dalam bahasa Inggris): panduan, penjelasan +per modul, dan referensi fungsi selengkapnya. Sumbernya ada di [`docs/writerside/`](docs/writerside/) dan dibangun +ulang pada setiap push ke `main`. + +Urutan membaca yang disarankan: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — langkah pertama +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — skema penamaan + `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — hierarki kelas dan apa yang memicu + masing-masing exception +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — fungsi bantu mana yang terikat + pada layanan Google, dan apa artinya bagi pengujian + +## Contoh penggunaan + +### Bekerja dengan sheet + +Menambahkan beberapa baris data sekaligus secara efisien: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Utilitas Admin SDK + +Memeriksa apakah pengguna saat ini memiliki hak administrator: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### Parsing notasi A1 + +Mengurai notasi A1 yang kompleks menjadi objek terstruktur: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Pengembangan + +### Skrip + +Skrip berikut tersedia di `package.json`: + +| Skrip | Deskripsi | +| :------------------- | :--------------------------------------------------------------------- | +| `npm run build` | Membersihkan direktori `dist` dan mengompilasi kode sumber TypeScript. | +| `npm run dev` | Menjalankan Vitest dalam mode watch. | +| `npm test` | Menjalankan seluruh rangkaian pengujian satu kali. | +| `npm run type:check` | Memeriksa tipe proyek tanpa menghasilkan output. | +| `npm run lint` | Memeriksa kode dengan ESLint. | +| `npm run lint:fix` | Memeriksa kode dan memperbaiki otomatis apa yang bisa diperbaiki. | +| `npm run format` | Memeriksa format dengan Prettier. | +| `npm run format:fix` | Memformat kode dengan Prettier. | +| `npm run prepare` | Menyiapkan git hook Husky (berjalan otomatis setelah instalasi). | + +### Pengujian + +Proyek ini menggunakan [Vitest](https://vitest.dev/) untuk unit test. + +Jalankan seluruh rangkaian pengujian satu kali: + +```bash +npm test +``` + +Atau jalankan dalam mode watch selama pengembangan: + +```bash +npm run dev +``` + +## Struktur proyek + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Fungsi per kategori + +Referensi fungsi selengkapnya telah dipindahkan ke situs dokumentasi, yang dibangun dari +[`docs/writerside/`](docs/writerside/) dan diterbitkan pada setiap push ke `main`: + +**** + +| Bagian | Cakupan | +| :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, permintaan jaringan, dan kelas UI bawaan | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Pemeriksaan tipe dan validasi, manipulasi string, array, dan objek, penanganan JSON dan HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Kelas exception bertipe dan apa yang memicu masing-masing | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Path file dan URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Komponen dasar bersama | + +Selain referensi, situs ini juga memuat panduan yang tidak muat di tabel: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) menjelaskan skema +`isX`/`nonX`/`requireX`/`requireNonX` di satu tempat, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) memaparkan hierarki kelas, dan +[the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) membahas fungsi bantu mana yang +terikat pada layanan Google, apa konsekuensinya, dan apa artinya bagi pengujian. + +## Berkontribusi + +Kontribusi sangat kami sambut. Panduan lengkapnya ada di [CONTRIBUTING.md](CONTRIBUTING.md). Ringkasnya: + +1. Fork repositori dan buat branch untuk fitur atau perbaikan bug Anda. +2. Tambahkan atau perbarui pengujian yang mencakup perubahan Anda. +3. Jalankan `npm run lint` dan `npm run format` sebelum melakukan commit. +4. Jangan mengedit `CHANGELOG.md` secara manual — file ini dibuat otomatis oleh [release-please](https://github.com/googleapis/release-please). +5. Buka pull request yang menjelaskan apa yang berubah dan alasannya. + +Ikuti gaya kode dan konvensi penamaan yang sudah ada. Pedoman komunitas ada di [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). + +## Dukungan + +- Untuk bug atau permintaan fitur, cari atau buka [issue](https://github.com/bootgs/utils/issues) di GitHub. +- Untuk perubahan terbaru, lihat [catatan perubahan](CHANGELOG.md). +- Untuk melaporkan kerentanan keamanan, ikuti [kebijakan keamanan](SECURITY.md) alih-alih membuka issue publik. +- Untuk mendukung pengembangan yang berkelanjutan, lihat [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Peta jalan + +Apa yang direncanakan, sedang dikerjakan, atau sudah selesai ada di +[papan proyek](https://github.com/users/MaksymStoianov/projects/2/views/2), yang dibangun langsung dari issue tracker. +Tidak ada dokumen peta jalan terpisah yang bisa tertinggal darinya: untuk mengusulkan sesuatu, buka +[issue](https://github.com/bootgs/utils/issues). + +## Catatan perubahan + +Untuk daftar perubahan per versi secara terperinci, lihat [CHANGELOG.md](CHANGELOG.md). + +## Lisensi + +Proyek ini dilisensikan di bawah Apache License 2.0. Lihat [LICENSE](LICENSE) untuk detailnya. + +Karya seni banner tidak termasuk dalam lisensi tersebut. Karya ini milik pembuatnya, boleh digunakan ulang tanpa +diubah dengan mencantumkan nama pembuat beserta tautannya, dan diatur oleh +[docs/assets/images/README.md](docs/assets/images/README.md). + +## Merek dagang + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms, dan Google Drive adalah merek dagang +Google LLC. Proyek ini adalah pustaka independen. Proyek ini tidak berafiliasi dengan, tidak didukung, dan tidak +disponsori oleh Google LLC, dan merek dagang tersebut digunakan semata-mata untuk menjelaskan dengan apa pustaka ini +bekerja. diff --git a/README.it.md b/README.it.md new file mode 100644 index 00000000..886e4a29 --- /dev/null +++ b/README.it.md @@ -0,0 +1,295 @@ + + +![Banner del progetto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Artista: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **Italiano** | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Questa traduzione è stata realizzata con l'aiuto dell'IA a partire da [README.md](README.md) per la versione 2.1.1. La versione di riferimento è il README in inglese; le correzioni sono benvenute — consulta [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Utility per Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Utility per Google Apps Script™](#utility-per-google-apps-script) + - [Panoramica](#panoramica) + - [Funzionalità principali](#funzionalità-principali) + - [Skill per agenti IA](#skill-per-agenti-ia) + - [Requisiti](#requisiti) + - [Installazione](#installazione) + - [Documentazione](#documentazione) + - [Esempi di utilizzo](#esempi-di-utilizzo) + - [Sviluppo](#sviluppo) + - [Script](#script) + - [Test](#test) + - [Struttura del progetto](#struttura-del-progetto) + - [Funzioni per categoria](#funzioni-per-categoria) + - [Come contribuire](#come-contribuire) + - [Supporto](#supporto) + - [Roadmap](#roadmap) + - [Registro delle modifiche](#registro-delle-modifiche) + - [Licenza](#licenza) + + +## Panoramica + +**@bootgs/utils** è una libreria di utility in TypeScript pensata appositamente per **Google Apps Script**. Riunisce +le funzioni di supporto che ogni progetto GAS finisce per scrivere a mano — manipolazione dei fogli di calcolo e della +notazione A1, validazione di tipi e valori (`isX`/`nonX`/`requireX`), trasformazioni di stringhe e array, eccezioni +tipizzate e altro ancora — in un unico pacchetto ben documentato e interamente testato. + +## Funzionalità principali + +- **Pensata per Google Apps Script** — progettata attorno al runtime GAS e ai suoi vincoli, non adattata da una + libreria Node.js generica. +- **Ampia copertura** — funzioni per fogli di calcolo, UI, rete e Admin SDK accanto a utility di uso generale per + stringhe, array e oggetti. +- **TypeScript prima di tutto** — ogni funzione include definizioni di tipo complete per l'autocompletamento nell'IDE + e la sicurezza in fase di compilazione. +- **Testata** — coperta da una suite di test unitari con Vitest. +- **Documentazione di riferimento collegata** — ogni tipo di Google Apps Script usato nell'API rimanda direttamente + alla relativa documentazione ufficiale. +- **Gestione coerente degli errori** — una gerarchia dedicata di classi di eccezione sostituisce gli errori lanciati + in modo estemporaneo. + +## Skill per agenti IA + +Per i team che usano un agente di programmazione basato sull'IA (Claude Code, Gemini CLI e altri), il repository +[bootgs/skills](https://github.com/bootgs/skills) offre un Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) che documenta questa +libreria per tali agenti, compresa la convenzione di validazione `isX`/`nonX`/`requireX`, le funzioni per la +notazione A1 e i fogli, per stringhe, numeri e array, le eccezioni tipizzate e le funzioni per HTML, JSON e percorsi. + +Installazione con Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Installazione con la CLI `npx skills`, che supporta più agenti: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Una volta installato, l'agente applica lo skill automaticamente quando un'attività riguarda questa libreria. + +## Requisiti + +- [Node.js](https://nodejs.org/) v22.14.0 o successiva +- [npm](https://www.npmjs.com/) (o un altro gestore di pacchetti per Node, ad es. pnpm) + +## Installazione + +Installa il pacchetto tramite npm: + +```bash +npm install @bootgs/utils +``` + +## Documentazione + +La documentazione completa è pubblicata su **** (in inglese): +guide, percorsi dedicati a ogni modulo e il riferimento completo delle funzioni. Il suo sorgente si trova in +[`docs/writerside/`](docs/writerside/) e viene ricostruito a ogni push su `main`. + +Un buon ordine di lettura: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — primi passi +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — lo + schema di denominazione `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — la gerarchia + delle classi e cosa solleva ciascuna eccezione +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — quali + funzioni sono legate a un servizio Google e cosa comporta questo per i test + +## Esempi di utilizzo + +### Lavorare con i fogli + +Aggiungere più righe di dati in modo efficiente: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Utility per Admin SDK + +Verificare se l'utente corrente ha privilegi di amministratore: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### Analisi della notazione A1 + +Analizzare notazioni A1 complesse e convertirle in oggetti strutturati: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Sviluppo + +### Script + +In `package.json` sono disponibili i seguenti script: + +| Script | Descrizione | +| :------------------- | :------------------------------------------------------------------------------------- | +| `npm run build` | Svuota la directory `dist` e compila il sorgente TypeScript. | +| `npm run dev` | Avvia Vitest in modalità watch. | +| `npm test` | Esegue una volta l'intera suite di test. | +| `npm run type:check` | Controlla i tipi del progetto senza generare output. | +| `npm run lint` | Analizza il codice con ESLint. | +| `npm run lint:fix` | Analizza il codice e corregge automaticamente ciò che può. | +| `npm run format` | Controlla la formattazione con Prettier. | +| `npm run format:fix` | Formatta il codice con Prettier. | +| `npm run prepare` | Configura gli hook Git di Husky (viene eseguito automaticamente dopo l'installazione). | + +### Test + +Il progetto usa [Vitest](https://vitest.dev/) per i test unitari. + +Eseguire l'intera suite una volta: + +```bash +npm test +``` + +Oppure eseguirla in modalità watch durante lo sviluppo: + +```bash +npm run dev +``` + +## Struttura del progetto + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Funzioni per categoria + +Il riferimento completo delle funzioni è stato spostato sul sito della documentazione, generato a partire da +[`docs/writerside/`](docs/writerside/) e pubblicato a ogni push su `main`: + +**** + +| Sezione | Contenuto | +| :------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, richieste di rete e le classi UI integrate | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Controllo dei tipi e validazione, manipolazione di stringhe, array e oggetti, gestione di JSON e HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Le classi di eccezione tipizzate e cosa solleva ciascuna | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Percorsi di file e URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Componenti condivisi | + +Oltre al riferimento, il sito ospita le guide che non trovavano posto nelle tabelle: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) spiega lo +schema `isX`/`nonX`/`requireX`/`requireNonX` in un unico punto, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) illustra la gerarchia +delle classi e [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +spiega quali funzioni sono legate a un servizio Google, quanto costa questo legame e cosa comporta per i test. + +## Come contribuire + +I contributi sono benvenuti. La guida completa è in [CONTRIBUTING.md](CONTRIBUTING.md). In sintesi: + +1. Fai un fork del repository e crea un branch per la tua funzionalità o correzione. +2. Aggiungi o aggiorna i test che coprono le tue modifiche. +3. Esegui `npm run lint` e `npm run format` prima del commit. +4. Non modificare `CHANGELOG.md` a mano: viene generato automaticamente da [release-please](https://github.com/googleapis/release-please). +5. Apri una pull request che descriva cosa è cambiato e perché. + +Segui lo stile del codice e le convenzioni di denominazione esistenti. Le linee guida della comunità sono in +[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). + +## Supporto + +- Per bug o richieste di funzionalità, cerca o apri una [issue](https://github.com/bootgs/utils/issues) + su GitHub. +- Per le modifiche recenti, consulta il [registro delle modifiche](CHANGELOG.md). +- Per segnalare una vulnerabilità di sicurezza, segui la [politica di sicurezza](SECURITY.md) invece di aprire una + issue pubblica. +- Per sostenere lo sviluppo continuo, consulta [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Roadmap + +Ciò che è pianificato, in corso o completato si trova nella [bacheca del progetto](https://github.com/users/MaksymStoianov/projects/2/views/2), +costruita direttamente a partire dal tracker delle issue. Non esiste un documento di roadmap separato che possa +disallinearsi: per proporre qualcosa, apri una [issue](https://github.com/bootgs/utils/issues). + +## Registro delle modifiche + +Per l'elenco dettagliato delle modifiche per versione, consulta [CHANGELOG.md](CHANGELOG.md). + +## Licenza + +Questo progetto è distribuito con licenza Apache License 2.0. Consulta [LICENSE](LICENSE) per i dettagli. + +L'illustrazione del banner non rientra in tale licenza. È opera della sua autrice, può essere riutilizzata senza +modifiche citando l'autrice con un link, ed è disciplinata da +[docs/assets/images/README.md](docs/assets/images/README.md). + +## Marchi + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms e Google Drive sono marchi di Google LLC. +Questo progetto è una libreria indipendente. Non è affiliato a Google LLC né da essa approvato o sponsorizzato, e i +marchi sono usati solo per descrivere con cosa funziona la libreria. diff --git a/README.ja.md b/README.ja.md index 350071ee..445283bd 100644 --- a/README.ja.md +++ b/README.ja.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **日本語** | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | **日本語** | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > この翻訳は、バージョン 2.1.1 の [README.md](README.md) をもとに AI の支援を受けて作成しました。正式な内容は英語版 README です。修正の提案を歓迎します。詳しくは [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations) をご覧ください。 diff --git a/README.ko.md b/README.ko.md new file mode 100644 index 00000000..ecc179cc --- /dev/null +++ b/README.ko.md @@ -0,0 +1,263 @@ + + +![Google Apps Script Utils 프로젝트 배너](docs/assets/images/banner-1280x640.jpg) + +

+ + 아티스트: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | **한국어** | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> 이 번역은 버전 2.1.1의 [README.md](README.md)를 바탕으로 AI의 도움을 받아 작성했습니다. 기준이 되는 버전은 영어 README이며, 수정 제안을 환영합니다. 자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)를 참고하세요. + +# Google Apps Script™용 유틸리티 + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Google Apps Script™용 유틸리티](#google-apps-script용-유틸리티) + - [개요](#개요) + - [주요 기능](#주요-기능) + - [AI 에이전트용 스킬](#ai-에이전트용-스킬) + - [요구 사항](#요구-사항) + - [설치](#설치) + - [문서](#문서) + - [사용 예제](#사용-예제) + - [개발](#개발) + - [스크립트](#스크립트) + - [테스트](#테스트) + - [프로젝트 구조](#프로젝트-구조) + - [카테고리별 함수](#카테고리별-함수) + - [기여하기](#기여하기) + - [지원](#지원) + - [로드맵](#로드맵) + - [변경 이력](#변경-이력) + - [라이선스](#라이선스) + + +## 개요 + +**@bootgs/utils**는 **Google Apps Script** 전용으로 만든 TypeScript 유틸리티 라이브러리입니다. 모든 GAS 프로젝트에서 결국 직접 작성하게 되는 헬퍼 — 스프레드시트와 A1 표기법 조작, 타입·값 검증(`isX`/`nonX`/`requireX`), 문자열과 배열 변환, 타입이 지정된 예외 등 — 를 문서화가 잘 되어 있고 테스트를 모두 거친 하나의 패키지로 모았습니다. + +## 주요 기능 + +- **Google Apps Script 전용 설계** — 범용 Node.js 라이브러리를 옮겨 온 것이 아니라 GAS 런타임과 그 제약을 기준으로 설계했습니다. +- **폭넓은 유틸리티** — 스프레드시트, UI, 네트워크, Admin SDK 헬퍼와 함께 문자열, 배열, 객체를 위한 범용 유틸리티를 제공합니다. +- **TypeScript 우선** — 모든 함수에 완전한 타입 정의가 포함되어 IDE 자동 완성과 컴파일 타임 안전성을 누릴 수 있습니다. +- **테스트 완료** — Vitest 단위 테스트 스위트로 검증됩니다. +- **연결된 레퍼런스 문서** — API에서 사용하는 모든 Google Apps Script 타입이 공식 문서로 바로 연결됩니다. +- **일관된 오류 처리** — 그때그때 던지는 오류 대신 전용 예외 클래스 계층 구조를 사용합니다. + +## AI 에이전트용 스킬 + +AI 코딩 에이전트(Claude Code, Gemini CLI 등)를 사용하는 팀을 위해 [bootgs/skills](https://github.com/bootgs/skills) 저장소는 이 라이브러리를 에이전트에게 설명하는 [`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) Agent Skill을 제공합니다. 여기에는 `isX`/`nonX`/`requireX` 검증 규칙, A1 표기법과 시트 헬퍼, 문자열·숫자·배열 헬퍼, 타입이 지정된 예외, HTML/JSON/경로 헬퍼가 포함됩니다. + +Claude Code로 설치: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +여러 에이전트를 지원하는 `npx skills` CLI로 설치: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +설치가 끝나면 작업이 이 라이브러리와 관련될 때 에이전트가 스킬을 자동으로 적용합니다. + +## 요구 사항 + +- [Node.js](https://nodejs.org/) v22.14.0 이상 +- [npm](https://www.npmjs.com/) (또는 pnpm 같은 다른 Node 패키지 관리자) + +## 설치 + +npm으로 패키지를 설치합니다. + +```bash +npm install @bootgs/utils +``` + +## 문서 + +전체 문서는 ****(영어)에 게시되어 있습니다. 가이드, 모듈별 안내, 전체 함수 레퍼런스를 담고 있습니다. 소스는 [`docs/writerside/`](docs/writerside/)에 있으며 `main`에 push할 때마다 다시 빌드됩니다. + +추천하는 읽는 순서: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — 시작하기 +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — `isX`/`nonX`/`requireX`/`requireNonX` 명명 규칙 +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — 예외 클래스 계층 구조와 각 예외가 발생하는 상황 +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — 어떤 헬퍼가 Google 서비스에 묶여 있는지, 그리고 그것이 테스트에 어떤 의미인지 + +## 사용 예제 + +### 시트 다루기 + +여러 행의 데이터를 효율적으로 추가합니다. + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Admin SDK 유틸리티 + +현재 사용자에게 관리자 권한이 있는지 확인합니다. + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### A1 표기법 파싱 + +복잡한 A1 표기법을 구조화된 객체로 파싱합니다. + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## 개발 + +### 스크립트 + +`package.json`에서 다음 스크립트를 사용할 수 있습니다. + +| 스크립트 | 설명 | +| :------------------- | :------------------------------------------------------- | +| `npm run build` | `dist` 디렉터리를 비우고 TypeScript 소스를 컴파일합니다. | +| `npm run dev` | Vitest를 watch 모드로 시작합니다. | +| `npm test` | 전체 테스트 스위트를 한 번 실행합니다. | +| `npm run type:check` | 출력물을 생성하지 않고 프로젝트의 타입을 검사합니다. | +| `npm run lint` | ESLint로 코드베이스를 검사합니다. | +| `npm run lint:fix` | 코드베이스를 검사하고 가능한 문제를 자동으로 수정합니다. | +| `npm run format` | Prettier로 포맷을 확인합니다. | +| `npm run format:fix` | Prettier로 코드베이스를 포맷합니다. | +| `npm run prepare` | Husky Git 훅을 설정합니다(설치 후 자동으로 실행됨). | + +### 테스트 + +이 프로젝트는 단위 테스트에 [Vitest](https://vitest.dev/)를 사용합니다. + +전체 스위트를 한 번 실행: + +```bash +npm test +``` + +또는 개발 중에 watch 모드로 실행: + +```bash +npm run dev +``` + +## 프로젝트 구조 + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## 카테고리별 함수 + +전체 함수 레퍼런스는 문서 사이트(영어)로 옮겨졌습니다. 이 사이트는 [`docs/writerside/`](docs/writerside/)에서 빌드되며 `main`에 push할 때마다 게시됩니다. + +**** + +| 섹션 | 다루는 내용 | +| :------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, 네트워크 요청, 내장 UI 클래스 | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | 타입 검사와 유효성 검사, 문자열·배열·객체 조작, JSON 및 HTML 처리 | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | 타입이 지정된 예외 클래스와 각 예외가 발생하는 상황 | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | 파일 경로와 URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | 공통 구성 요소 | + +레퍼런스와 함께, 표로는 담을 수 없었던 가이드도 사이트에서 제공합니다. [validation conventions](https://bootgs.github.io/utils/validation-conventions.html)는 `isX`/`nonX`/`requireX`/`requireNonX` 규칙을 한곳에서 설명하고, [exception handling](https://bootgs.github.io/utils/exception-handling.html)은 클래스 계층 구조를 정리하며, [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html)은 어떤 헬퍼가 Google 서비스에 묶여 있는지, 그에 따른 비용은 무엇인지, 테스트에는 어떤 의미가 있는지를 다룹니다. + +## 기여하기 + +기여를 환영합니다. 전체 가이드는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요. 요약하면 다음과 같습니다. + +1. 저장소를 포크하고 기능 추가나 버그 수정을 위한 브랜치를 만듭니다. +2. 변경 사항을 검증하는 테스트를 추가하거나 업데이트합니다. +3. 커밋하기 전에 `npm run lint`와 `npm run format`을 실행합니다. +4. `CHANGELOG.md`는 직접 수정하지 마세요. [release-please](https://github.com/googleapis/release-please)가 자동으로 생성합니다. +5. 무엇을 왜 변경했는지 설명하는 풀 리퀘스트를 엽니다. + +기존 코드 스타일과 명명 규칙을 따라 주세요. 커뮤니티 가이드라인은 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)를 참고하세요. + +## 지원 + +- 버그 신고나 기능 요청은 GitHub에서 [이슈](https://github.com/bootgs/utils/issues)를 검색하거나 새로 등록해 주세요. +- 최근 변경 사항은 [변경 이력](CHANGELOG.md)을 참고하세요. +- 보안 취약점은 공개 이슈를 여는 대신 [보안 정책](SECURITY.md)에 따라 신고해 주세요. +- 지속적인 개발을 후원하려면 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)를 참고하세요. + +## 로드맵 + +계획 중이거나 진행 중이거나 완료된 작업은 이슈 트래커를 바탕으로 만든 [프로젝트 보드](https://github.com/users/MaksymStoianov/projects/2/views/2)에서 확인할 수 있습니다. 보드와 어긋날 수 있는 별도의 로드맵 문서는 두지 않습니다. 제안할 내용이 있다면 [이슈](https://github.com/bootgs/utils/issues)를 열어 주세요. + +## 변경 이력 + +버전별 변경 사항의 자세한 목록은 [CHANGELOG.md](CHANGELOG.md)를 참고하세요. + +## 라이선스 + +이 프로젝트는 Apache License 2.0에 따라 배포됩니다. 자세한 내용은 [LICENSE](LICENSE)를 참고하세요. + +배너 일러스트는 이 라이선스에 포함되지 않습니다. 이 작품은 작가의 저작물로, 작가를 표기하고 그 표기에 링크를 걸면 수정하지 않은 상태로 재사용할 수 있으며, [docs/assets/images/README.md](docs/assets/images/README.md)의 적용을 받습니다. + +## 상표 + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms, Google Drive는 Google LLC의 상표입니다. 이 프로젝트는 독립적인 라이브러리이며 Google LLC와 제휴하거나 Google LLC의 보증 또는 후원을 받지 않습니다. 상표는 이 라이브러리가 함께 동작하는 대상을 설명하기 위해서만 사용됩니다. diff --git a/README.md b/README.md index 67765f04..b833b28c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

-**English** | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +**English** | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) # Utilities for Google Apps Script™ diff --git a/README.nl.md b/README.nl.md new file mode 100644 index 00000000..4b2e81b5 --- /dev/null +++ b/README.nl.md @@ -0,0 +1,294 @@ + + +![Projectbanner van Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Kunstenaar: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | **Nederlands** | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Deze vertaling is met behulp van AI gemaakt op basis van [README.md](README.md) voor versie 2.1.1. De referentieversie is de Engelse README; correcties zijn welkom — zie [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Hulpprogramma's voor Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Hulpprogramma's voor Google Apps Script™](#hulpprogrammas-voor-google-apps-script) + - [Overzicht](#overzicht) + - [Belangrijkste functies](#belangrijkste-functies) + - [Skills voor AI-agents](#skills-voor-ai-agents) + - [Vereisten](#vereisten) + - [Installatie](#installatie) + - [Documentatie](#documentatie) + - [Gebruiksvoorbeelden](#gebruiksvoorbeelden) + - [Ontwikkeling](#ontwikkeling) + - [Scripts](#scripts) + - [Testen](#testen) + - [Projectstructuur](#projectstructuur) + - [Functies per categorie](#functies-per-categorie) + - [Bijdragen](#bijdragen) + - [Ondersteuning](#ondersteuning) + - [Roadmap](#roadmap) + - [Changelog](#changelog) + - [Licentie](#licentie) + + +## Overzicht + +**@bootgs/utils** is een TypeScript-hulpbibliotheek die speciaal is gebouwd voor **Google Apps Script**. Ze bundelt de +hulpfuncties die elk GAS-project uiteindelijk zelf schrijft — bewerken van spreadsheets en A1-notatie, validatie van +typen en waarden (`isX`/`nonX`/`requireX`), transformaties van strings en arrays, getypeerde exceptions en meer — in +één goed gedocumenteerd en volledig getest pakket. + +## Belangrijkste functies + +- **Gebouwd voor Google Apps Script** — ontworpen rond de GAS-runtime en de beperkingen daarvan, niet aangepast vanuit + een generieke Node.js-bibliotheek. +- **Brede dekking** — hulpfuncties voor spreadsheets, UI, netwerk en Admin SDK, naast algemene hulpmiddelen voor + strings, arrays en objecten. +- **TypeScript-first** — elke functie wordt geleverd met volledige typedefinities voor automatisch aanvullen in de IDE + en veiligheid tijdens het compileren. +- **Getest** — gedekt door een suite met unittests in Vitest. +- **Gekoppelde referentiedocumentatie** — elk Google Apps Script-type dat in de API wordt gebruikt, linkt rechtstreeks + naar de officiële documentatie ervan. +- **Consistente foutafhandeling** — een eigen hiërarchie van exceptionklassen vervangt willekeurig gegooide fouten. + +## Skills voor AI-agents + +Voor teams die een AI-codeeragent gebruiken (Claude Code, Gemini CLI en andere) biedt de repository +[bootgs/skills](https://github.com/bootgs/skills) een Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) die deze bibliotheek voor +zulke agents documenteert, waaronder de validatieconventie `isX`/`nonX`/`requireX`, de hulpfuncties voor A1-notatie +en sheets, voor strings, getallen en arrays, de getypeerde exceptions en de hulpfuncties voor HTML, JSON en paden. + +Installeren met Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Installeren met de CLI `npx skills`, die meerdere agents ondersteunt: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Na installatie past de agent de skill automatisch toe wanneer een taak met deze bibliotheek te maken heeft. + +## Vereisten + +- [Node.js](https://nodejs.org/) v22.14.0 of nieuwer +- [npm](https://www.npmjs.com/) (of een andere pakketbeheerder voor Node, bijv. pnpm) + +## Installatie + +Installeer het pakket via npm: + +```bash +npm install @bootgs/utils +``` + +## Documentatie + +De volledige documentatie staat op **** (in het Engels): handleidingen, uitleg per +module en de complete functiereferentie. De bron staat in [`docs/writerside/`](docs/writerside/) en wordt bij elke +push naar `main` opnieuw gebouwd. + +Een goede leesvolgorde: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — de eerste stappen +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — het naamgevingsschema + `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — de klassenhiërarchie en wat elke + exception veroorzaakt +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — welke hulpfuncties aan een + Google-service gebonden zijn en wat dat betekent voor het testen + +## Gebruiksvoorbeelden + +### Werken met sheets + +Voeg efficiënt meerdere rijen met gegevens toe: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Hulpfuncties voor de Admin SDK + +Controleer of de huidige gebruiker beheerdersrechten heeft: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### A1-notatie parsen + +Zet complexe A1-notaties om in gestructureerde objecten: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Ontwikkeling + +### Scripts + +De volgende scripts zijn beschikbaar in `package.json`: + +| Script | Beschrijving | +| :------------------- | :---------------------------------------------------------------------- | +| `npm run build` | Leegt de map `dist` en compileert de TypeScript-broncode. | +| `npm run dev` | Start Vitest in watch-modus. | +| `npm test` | Voert de volledige testsuite één keer uit. | +| `npm run type:check` | Controleert de typen van het project zonder uitvoer te genereren. | +| `npm run lint` | Controleert de code met ESLint. | +| `npm run lint:fix` | Controleert de code en herstelt automatisch wat mogelijk is. | +| `npm run format` | Controleert de opmaak met Prettier. | +| `npm run format:fix` | Formatteert de code met Prettier. | +| `npm run prepare` | Richt de Git-hooks van Husky in (draait automatisch na de installatie). | + +### Testen + +Het project gebruikt [Vitest](https://vitest.dev/) voor unittests. + +Voer de volledige suite één keer uit: + +```bash +npm test +``` + +Of draai hem in watch-modus tijdens het ontwikkelen: + +```bash +npm run dev +``` + +## Projectstructuur + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Functies per categorie + +De volledige functiereferentie is verhuisd naar de documentatiesite (in het Engels), die wordt gebouwd vanuit +[`docs/writerside/`](docs/writerside/) en bij elke push naar `main` wordt gepubliceerd: + +**** + +| Sectie | Inhoud | +| :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, netwerkverzoeken en de ingebouwde UI-klassen | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Typecontrole en validatie, bewerken van strings, arrays en objecten, verwerking van JSON en HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | De getypeerde exceptionklassen en wat elk ervan veroorzaakt | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Bestandspaden en URL's | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Gedeelde bouwstenen | + +Naast de referentie bevat de site de handleidingen waar in de tabellen geen ruimte voor was: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) legt het schema +`isX`/`nonX`/`requireX`/`requireNonX` op één plek uit, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) beschrijft de klassenhiërarchie, en +[the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) behandelt welke hulpfuncties aan +een Google-service gebonden zijn, wat dat kost en wat het betekent voor het testen. + +## Bijdragen + +Bijdragen zijn welkom. Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor de volledige handleiding. Kort samengevat: + +1. Fork de repository en maak een branch aan voor je feature of bugfix. +2. Voeg tests toe of werk ze bij zodat ze je wijzigingen dekken. +3. Voer `npm run lint` en `npm run format` uit voordat je commit. +4. Bewerk `CHANGELOG.md` niet handmatig: het bestand wordt automatisch gegenereerd door [release-please](https://github.com/googleapis/release-please). +5. Open een pull request waarin je beschrijft wat er is veranderd en waarom. + +Volg de bestaande codestijl en naamgevingsconventies. Zie [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) voor de +gemeenschapsrichtlijnen. + +## Ondersteuning + +- Voor bugs of featureverzoeken: zoek of open een [issue](https://github.com/bootgs/utils/issues) op GitHub. +- Voor recente wijzigingen: zie de [changelog](CHANGELOG.md). +- Om een beveiligingsprobleem te melden, volg je het [beveiligingsbeleid](SECURITY.md) in plaats van een openbare + issue te openen. +- Om de verdere ontwikkeling te steunen: zie [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Roadmap + +Wat gepland, in uitvoering of afgerond is, staat op het [projectbord](https://github.com/users/MaksymStoianov/projects/2/views/2), +dat rechtstreeks uit de issuetracker wordt opgebouwd. Er is geen apart roadmapdocument dat daarmee uit de pas kan +gaan lopen: wil je iets voorstellen, open dan een [issue](https://github.com/bootgs/utils/issues). + +## Changelog + +Een gedetailleerde lijst met wijzigingen per versie vind je in [CHANGELOG.md](CHANGELOG.md). + +## Licentie + +Dit project valt onder de Apache License 2.0. Zie [LICENSE](LICENSE) voor details. + +De bannerillustratie valt niet onder die licentie. Het is het werk van de maker, mag ongewijzigd worden hergebruikt +mits de maker wordt vermeld en die vermelding een link bevat, en valt onder +[docs/assets/images/README.md](docs/assets/images/README.md). + +## Handelsmerken + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms en Google Drive zijn handelsmerken van +Google LLC. Dit project is een onafhankelijke bibliotheek. Het is niet gelieerd aan Google LLC en wordt niet door +Google LLC onderschreven of gesponsord; de handelsmerken worden alleen gebruikt om te beschrijven waarmee de +bibliotheek werkt. diff --git a/README.pl.md b/README.pl.md new file mode 100644 index 00000000..f4e10f60 --- /dev/null +++ b/README.pl.md @@ -0,0 +1,294 @@ + + +![Baner projektu Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Artystka: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | **Polski** | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> To tłumaczenie powstało z pomocą AI na podstawie [README.md](README.md) dla wersji 2.1.1. Wersją wzorcową jest angielskie README; poprawki są mile widziane — zajrzyj do [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Narzędzia dla Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Narzędzia dla Google Apps Script™](#narzędzia-dla-google-apps-script) + - [Przegląd](#przegląd) + - [Najważniejsze funkcje](#najważniejsze-funkcje) + - [Skills dla agentów AI](#skills-dla-agentów-ai) + - [Wymagania](#wymagania) + - [Instalacja](#instalacja) + - [Dokumentacja](#dokumentacja) + - [Przykłady użycia](#przykłady-użycia) + - [Rozwój projektu](#rozwój-projektu) + - [Skrypty](#skrypty) + - [Testy](#testy) + - [Struktura projektu](#struktura-projektu) + - [Funkcje według kategorii](#funkcje-według-kategorii) + - [Jak pomóc w rozwoju](#jak-pomóc-w-rozwoju) + - [Wsparcie](#wsparcie) + - [Plan rozwoju](#plan-rozwoju) + - [Historia zmian](#historia-zmian) + - [Licencja](#licencja) + + +## Przegląd + +**@bootgs/utils** to biblioteka narzędziowa w TypeScript stworzona specjalnie dla **Google Apps Script**. Zbiera +w jednym, dobrze udokumentowanym i w pełni przetestowanym pakiecie funkcje pomocnicze, które każdy projekt GAS +w końcu pisze ręcznie — operacje na arkuszach i notacji A1, walidację typów i wartości (`isX`/`nonX`/`requireX`), +przekształcenia ciągów znaków i tablic, typowane wyjątki i nie tylko. + +## Najważniejsze funkcje + +- **Stworzona dla Google Apps Script** — zaprojektowana z myślą o środowisku uruchomieniowym GAS i jego + ograniczeniach, a nie zaadaptowana z ogólnej biblioteki Node.js. +- **Szeroki zakres narzędzi** — funkcje pomocnicze do arkuszy, UI, sieci i Admin SDK obok uniwersalnych narzędzi do + ciągów znaków, tablic i obiektów. +- **Przede wszystkim TypeScript** — każda funkcja ma pełne definicje typów, co daje autouzupełnianie w IDE + i bezpieczeństwo na etapie kompilacji. +- **Przetestowana** — objęta zestawem testów jednostkowych w Vitest. +- **Powiązana dokumentacja referencyjna** — każdy typ Google Apps Script używany w API prowadzi bezpośrednio do + swojej oficjalnej dokumentacji. +- **Spójna obsługa błędów** — dedykowana hierarchia klas wyjątków zastępuje doraźnie rzucane błędy. + +## Skills dla agentów AI + +Dla zespołów korzystających z agenta AI do programowania (Claude Code, Gemini CLI i innych) repozytorium +[bootgs/skills](https://github.com/bootgs/skills) udostępnia Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils), który opisuje tę bibliotekę +dla takich agentów, w tym konwencję walidacji `isX`/`nonX`/`requireX`, funkcje do notacji A1 i arkuszy, do ciągów +znaków, liczb i tablic, typowane wyjątki oraz funkcje do HTML, JSON i ścieżek. + +Instalacja w Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Instalacja za pomocą CLI `npx skills`, które obsługuje wielu agentów: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Po instalacji agent automatycznie stosuje ten skill, gdy zadanie dotyczy tej biblioteki. + +## Wymagania + +- [Node.js](https://nodejs.org/) v22.14.0 lub nowszy +- [npm](https://www.npmjs.com/) (lub inny menedżer pakietów Node, np. pnpm) + +## Instalacja + +Zainstaluj pakiet przez npm: + +```bash +npm install @bootgs/utils +``` + +## Dokumentacja + +Pełna dokumentacja jest opublikowana pod adresem **** (po angielsku): +przewodniki, omówienia poszczególnych modułów i kompletna dokumentacja referencyjna funkcji. Jej źródła znajdują się +w [`docs/writerside/`](docs/writerside/) i są przebudowywane przy każdym pushu do `main`. + +Dobra kolejność lektury: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — pierwsze kroki +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — schemat + nazewnictwa `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — hierarchia klas + i to, co wywołuje każdy wyjątek +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — które + funkcje są powiązane z usługą Google i co to oznacza dla testowania + +## Przykłady użycia + +### Praca z arkuszami + +Wydajne dopisywanie wielu wierszy danych: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Narzędzia Admin SDK + +Sprawdzanie, czy bieżący użytkownik ma uprawnienia administratora: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### Parsowanie notacji A1 + +Parsowanie złożonych zapisów w notacji A1 do ustrukturyzowanych obiektów: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Rozwój projektu + +### Skrypty + +W `package.json` dostępne są następujące skrypty: + +| Skrypt | Opis | +| :------------------- | :----------------------------------------------------------------------- | +| `npm run build` | Czyści katalog `dist` i kompiluje kod źródłowy TypeScript. | +| `npm run dev` | Uruchamia Vitest w trybie obserwowania zmian. | +| `npm test` | Jednorazowo uruchamia pełny zestaw testów. | +| `npm run type:check` | Sprawdza typy w projekcie bez generowania plików wynikowych. | +| `npm run lint` | Analizuje kod za pomocą ESLint. | +| `npm run lint:fix` | Analizuje kod i automatycznie poprawia to, co się da. | +| `npm run format` | Sprawdza formatowanie za pomocą Prettier. | +| `npm run format:fix` | Formatuje kod za pomocą Prettier. | +| `npm run prepare` | Konfiguruje hooki Git Husky (uruchamia się automatycznie po instalacji). | + +### Testy + +Projekt używa [Vitest](https://vitest.dev/) do testów jednostkowych. + +Jednorazowe uruchomienie pełnego zestawu: + +```bash +npm test +``` + +Albo uruchomienie w trybie obserwowania zmian podczas pracy: + +```bash +npm run dev +``` + +## Struktura projektu + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Funkcje według kategorii + +Pełna dokumentacja referencyjna funkcji została przeniesiona na stronę dokumentacji, która jest budowana +z [`docs/writerside/`](docs/writerside/) i publikowana przy każdym pushu do `main`: + +**** + +| Sekcja | Zawartość | +| :------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, żądania sieciowe i wbudowane klasy UI | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Sprawdzanie typów i walidacja, operacje na ciągach znaków, tablicach i obiektach, obsługa JSON i HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Typowane klasy wyjątków i to, co wywołuje każdą z nich | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Ścieżki plików i adresy URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Wspólne elementy składowe | + +Oprócz dokumentacji referencyjnej strona zawiera przewodniki, które nie zmieściły się w tabelach: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) objaśnia w jednym miejscu +schemat `isX`/`nonX`/`requireX`/`requireNonX`, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) przedstawia hierarchię +klas, a [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +omawia, które funkcje są powiązane z usługą Google, ile to kosztuje i co oznacza dla testowania. + +## Jak pomóc w rozwoju + +Wkład w projekt jest mile widziany. Pełny przewodnik znajdziesz w [CONTRIBUTING.md](CONTRIBUTING.md). W skrócie: + +1. Zrób fork repozytorium i utwórz gałąź dla swojej funkcji lub poprawki. +2. Dodaj lub zaktualizuj testy obejmujące Twoje zmiany. +3. Przed commitem uruchom `npm run lint` i `npm run format`. +4. Nie edytuj `CHANGELOG.md` ręcznie — jest generowany automatycznie przez [release-please](https://github.com/googleapis/release-please). +5. Otwórz pull request z opisem tego, co się zmieniło i dlaczego. + +Trzymaj się istniejącego stylu kodu i konwencji nazewnictwa. Zasady społeczności opisuje +[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). + +## Wsparcie + +- W przypadku błędów lub propozycji nowych funkcji wyszukaj albo otwórz + [issue](https://github.com/bootgs/utils/issues) na GitHubie. +- Ostatnie zmiany znajdziesz w [historii zmian](CHANGELOG.md). +- Aby zgłosić lukę w zabezpieczeniach, postępuj zgodnie z [polityką bezpieczeństwa](SECURITY.md), zamiast otwierać + publiczne issue. +- Aby wesprzeć dalszy rozwój, zajrzyj na [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Plan rozwoju + +To, co jest zaplanowane, w toku lub ukończone, widać na [tablicy projektu](https://github.com/users/MaksymStoianov/projects/2/views/2), +budowanej bezpośrednio z systemu zgłoszeń. Nie ma osobnego dokumentu z planem rozwoju, który mógłby się z nią +rozjechać: aby coś zaproponować, otwórz [issue](https://github.com/bootgs/utils/issues). + +## Historia zmian + +Szczegółową listę zmian w poszczególnych wersjach znajdziesz w [CHANGELOG.md](CHANGELOG.md). + +## Licencja + +Ten projekt jest udostępniany na licencji Apache License 2.0. Szczegóły znajdziesz w pliku [LICENSE](LICENSE). + +Grafika banera nie jest objęta tą licencją. Jest dziełem jej autorki, może być ponownie wykorzystywana bez zmian +pod warunkiem podania autorki wraz z linkiem i podlega zasadom opisanym w +[docs/assets/images/README.md](docs/assets/images/README.md). + +## Znaki towarowe + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms i Google Drive są znakami towarowymi +Google LLC. Ten projekt jest niezależną biblioteką. Nie jest powiązany z Google LLC ani przez nią popierany czy +sponsorowany, a znaki towarowe są używane wyłącznie do opisania, z czym współpracuje biblioteka. diff --git a/README.pt.md b/README.pt.md index 562e1807..93522516 100644 --- a/README.pt.md +++ b/README.pt.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Esta tradução foi feita com ajuda de IA a partir do [README.md](README.md) para a versão 2.1.1. A versão de referência é o README em inglês; correções são bem-vindas — veja [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.ru.md b/README.ru.md index 23c5559c..330c84e8 100644 --- a/README.ru.md +++ b/README.ru.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Этот перевод выполнен с помощью ИИ по [README.md](README.md) для версии 2.1.1. Основной считается английская версия README; исправления приветствуются — см. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.tr.md b/README.tr.md new file mode 100644 index 00000000..2c51ae19 --- /dev/null +++ b/README.tr.md @@ -0,0 +1,297 @@ + + +![Google Apps Script Utils proje banner'ı](docs/assets/images/banner-1280x640.jpg) + +

+ + Sanatçı: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | **Türkçe** | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Bu çeviri, 2.1.1 sürümü için [README.md](README.md) dosyasından yapay zekâ desteğiyle yapılmıştır. Referans sürüm İngilizce README'dir; düzeltmelerinizi bekliyoruz — bkz. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Google Apps Script™ için yardımcı araçlar + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Google Apps Script™ için yardımcı araçlar](#google-apps-script-için-yardımcı-araçlar) + - [Genel bakış](#genel-bakış) + - [Temel özellikler](#temel-özellikler) + - [Yapay zekâ ajanları için skill'ler](#yapay-zekâ-ajanları-için-skilller) + - [Gereksinimler](#gereksinimler) + - [Kurulum](#kurulum) + - [Dokümantasyon](#dokümantasyon) + - [Kullanım örnekleri](#kullanım-örnekleri) + - [Geliştirme](#geliştirme) + - [Betikler](#betikler) + - [Testler](#testler) + - [Proje yapısı](#proje-yapısı) + - [Kategorilere göre fonksiyonlar](#kategorilere-göre-fonksiyonlar) + - [Katkıda bulunma](#katkıda-bulunma) + - [Destek](#destek) + - [Yol haritası](#yol-haritası) + - [Değişiklik günlüğü](#değişiklik-günlüğü) + - [Lisans](#lisans) + + +## Genel bakış + +**@bootgs/utils**, özellikle **Google Apps Script** için geliştirilmiş bir TypeScript yardımcı kütüphanesidir. Her GAS +projesinin eninde sonunda elle yazdığı yardımcıları — tablo ve A1 gösterimi işlemleri, tür/değer doğrulaması +(`isX`/`nonX`/`requireX`), dize ve dizi dönüşümleri, türlendirilmiş istisnalar ve daha fazlası — iyi belgelenmiş ve +tamamen test edilmiş tek bir pakette bir araya getirir. + +## Temel özellikler + +- **Google Apps Script için geliştirildi** — genel amaçlı bir Node.js kütüphanesinden uyarlanmadı; GAS çalışma zamanı + ve onun kısıtlamaları göz önünde bulundurularak tasarlandı. +- **Geniş kapsam** — genel amaçlı dize, dizi ve nesne yardımcılarının yanında tablo, UI, ağ ve Admin SDK yardımcıları. +- **Önce TypeScript** — her fonksiyon, IDE'de otomatik tamamlama ve derleme zamanında güvenlik için eksiksiz tür + tanımlarıyla gelir. +- **Test edilmiş** — Vitest birim test paketiyle kapsanır. +- **Bağlantılı başvuru dokümantasyonu** — API'de kullanılan her Google Apps Script türü doğrudan resmî + dokümantasyonuna bağlanır. +- **Tutarlı hata yönetimi** — rastgele fırlatılan hataların yerini özel bir istisna sınıfları hiyerarşisi alır. + +## Yapay zekâ ajanları için skill'ler + +Bir yapay zekâ kodlama ajanı (Claude Code, Gemini CLI ve diğerleri) kullanan ekipler için +[bootgs/skills](https://github.com/bootgs/skills) deposu, bu kütüphaneyi söz konusu ajanlara tanıtan +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) Agent Skill'ini sunar: +`isX`/`nonX`/`requireX` doğrulama kuralı, A1 gösterimi ve sayfa yardımcıları, dize/sayı/dizi yardımcıları, +türlendirilmiş istisnalar ve HTML/JSON/yol yardımcıları dahil. + +Claude Code ile kurulum: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Birden fazla ajanı destekleyen `npx skills` CLI'ı ile kurulum: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Kurulduktan sonra ajan, bir görev bu kütüphaneyle ilgili olduğunda skill'i otomatik olarak uygular. + +## Gereksinimler + +- [Node.js](https://nodejs.org/) v22.14.0 veya üzeri +- [npm](https://www.npmjs.com/) (ya da pnpm gibi başka bir Node paket yöneticisi) + +## Kurulum + +Paketi npm ile kurun: + +```bash +npm install @bootgs/utils +``` + +## Dokümantasyon + +Dokümantasyonun tamamı **** adresinde (İngilizce) yayımlanır: kılavuzlar, her modül +için adım adım anlatımlar ve eksiksiz fonksiyon başvurusu. Kaynağı [`docs/writerside/`](docs/writerside/) dizinindedir +ve `main` dalına yapılan her push'ta yeniden derlenir. + +Önerilen okuma sırası: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — ilk adımlar +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — + `isX`/`nonX`/`requireX`/`requireNonX` adlandırma şeması +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — sınıf hiyerarşisi + ve her istisnaya neyin yol açtığı +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — hangi + yardımcıların bir Google hizmetine bağlı olduğu ve bunun test açısından ne anlama geldiği + +## Kullanım örnekleri + +### Sheets ile çalışma + +Birden fazla veri satırını verimli bir şekilde ekleyin: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Admin SDK yardımcıları + +Geçerli kullanıcının yönetici ayrıcalıklarına sahip olup olmadığını kontrol edin: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### A1 gösterimini ayrıştırma + +Karmaşık A1 gösterimlerini yapılandırılmış nesnelere ayrıştırın: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Geliştirme + +### Betikler + +`package.json` içinde şu betikler bulunur: + +| Betik | Açıklama | +| :------------------- | :---------------------------------------------------------------------- | +| `npm run build` | `dist` dizinini temizler ve TypeScript kaynak kodunu derler. | +| `npm run dev` | Vitest'i izleme modunda başlatır. | +| `npm test` | Test paketinin tamamını bir kez çalıştırır. | +| `npm run type:check` | Çıktı üretmeden projenin tür denetimini yapar. | +| `npm run lint` | Kod tabanını ESLint ile denetler. | +| `npm run lint:fix` | Kod tabanını denetler ve düzeltebildiklerini otomatik olarak düzeltir. | +| `npm run format` | Biçimlendirmeyi Prettier ile kontrol eder. | +| `npm run format:fix` | Kod tabanını Prettier ile biçimlendirir. | +| `npm run prepare` | Husky Git hook'larını kurar (kurulumdan sonra otomatik olarak çalışır). | + +### Testler + +Proje, birim testleri için [Vitest](https://vitest.dev/) kullanır. + +Paketin tamamını bir kez çalıştırın: + +```bash +npm test +``` + +Ya da geliştirme sırasında izleme modunda çalıştırın: + +```bash +npm run dev +``` + +## Proje yapısı + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Kategorilere göre fonksiyonlar + +Fonksiyon başvurusunun tamamı, [`docs/writerside/`](docs/writerside/) dizininden derlenen ve `main` dalına yapılan her +push'ta yayımlanan dokümantasyon sitesine taşındı (İngilizce): + +**** + +| Bölüm | Kapsam | +| :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, ağ istekleri ve yerleşik UI sınıfları | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Tür denetimi ve doğrulama; dize, dizi ve nesne işlemleri; JSON ve HTML işleme | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Türlendirilmiş istisna sınıfları ve her birine neyin yol açtığı | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Dosya yolları ve URL'ler | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Ortak yapı taşları | + +Site, başvurunun yanı sıra tablolara sığmayan kılavuzları da içerir: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) +`isX`/`nonX`/`requireX`/`requireNonX` şemasını tek bir yerde açıklar, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) sınıf hiyerarşisini +ortaya koyar, [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +ise hangi yardımcıların bir Google hizmetine bağlı olduğunu, bunun maliyetini ve test açısından ne anlama geldiğini +ele alır. + +## Katkıda bulunma + +Katkılarınızı memnuniyetle karşılıyoruz. Kılavuzun tamamı için [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın. +Özetle: + +1. Depoyu fork'layın ve özelliğiniz ya da hata düzeltmeniz için bir dal oluşturun. +2. Değişikliklerinizi kapsayan testleri ekleyin veya güncelleyin. +3. Commit'ten önce `npm run lint` ve `npm run format` komutlarını çalıştırın. +4. `CHANGELOG.md` dosyasını elle düzenlemeyin — [release-please](https://github.com/googleapis/release-please) tarafından otomatik olarak oluşturulur. +5. Neyin neden değiştiğini açıklayan bir pull request açın. + +Mevcut kod stiline ve adlandırma kurallarına uyun. Topluluk kuralları için [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) +dosyasına bakın. + +## Destek + +- Hatalar veya özellik istekleri için GitHub'da bir [issue](https://github.com/bootgs/utils/issues) + arayın ya da açın. +- Son değişiklikler için [değişiklik günlüğüne](CHANGELOG.md) bakın. +- Bir güvenlik açığı bildirmek için herkese açık bir issue açmak yerine [güvenlik politikasını](SECURITY.md) izleyin. +- Süregelen geliştirmeyi desteklemek için [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) sayfasına + bakın. + +## Yol haritası + +Planlanan, üzerinde çalışılan ve tamamlanan işler, doğrudan issue takip sisteminden oluşturulan +[proje panosunda](https://github.com/users/MaksymStoianov/projects/2/views/2) yer alır. Panoyla uyumsuz hâle +gelebilecek ayrı bir yol haritası belgesi yoktur: bir öneriniz varsa bir [issue](https://github.com/bootgs/utils/issues) +açın. + +## Değişiklik günlüğü + +Sürümlere göre değişikliklerin ayrıntılı listesi için [CHANGELOG.md](CHANGELOG.md) dosyasına bakın. + +## Lisans + +Bu proje Apache License 2.0 ile lisanslanmıştır. Ayrıntılar için [LICENSE](LICENSE) dosyasına bakın. + +Banner görseli bu lisansın kapsamında değildir. Sanatçısına aittir; sanatçının adı belirtilip bu atıf bağlantıyla +verildiği sürece değiştirilmeden yeniden kullanılabilir ve [docs/assets/images/README.md](docs/assets/images/README.md) +kapsamındadır. + +## Ticari markalar + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms ve Google Drive, Google LLC'nin ticari +markalarıdır. Bu proje bağımsız bir kütüphanedir. Google LLC ile bağlantılı değildir, Google LLC tarafından +onaylanmamış veya desteklenmemiştir; markalar yalnızca kütüphanenin hangi ürünlerle çalıştığını belirtmek için +kullanılır. diff --git a/README.uk.md b/README.uk.md index 245eae55..d1c66363 100644 --- a/README.uk.md +++ b/README.uk.md @@ -8,7 +8,7 @@

-[English](README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Цей переклад зроблено за допомогою ШІ з [README.md](README.md) для версії 2.1.1. Основною є англійська версія README; виправлення вітаються — див. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). diff --git a/README.vi.md b/README.vi.md new file mode 100644 index 00000000..7e3ace15 --- /dev/null +++ b/README.vi.md @@ -0,0 +1,294 @@ + + +![Banner del proyecto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) + +

+ + Nghệ sĩ: Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | **Tiếng Việt** | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Bản dịch này được thực hiện với sự hỗ trợ của AI từ [README.md](README.md) cho phiên bản 2.1.1. Phiên bản tham chiếu là README tiếng Anh; mọi góp ý chỉnh sửa đều được hoan nghênh — xem [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). + +# Tiện ích cho Google Apps Script™ + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Tiện ích cho Google Apps Script™](#tiện-ích-cho-google-apps-script) + - [Tổng quan](#tổng-quan) + - [Tính năng chính](#tính-năng-chính) + - [Skill cho tác tử AI](#skill-cho-tác-tử-ai) + - [Yêu cầu](#yêu-cầu) + - [Cài đặt](#cài-đặt) + - [Tài liệu](#tài-liệu) + - [Ví dụ sử dụng](#ví-dụ-sử-dụng) + - [Phát triển](#phát-triển) + - [Scripts](#scripts) + - [Kiểm thử](#kiểm-thử) + - [Cấu trúc dự án](#cấu-trúc-dự-án) + - [Hàm theo danh mục](#hàm-theo-danh-mục) + - [Đóng góp](#đóng-góp) + - [Hỗ trợ](#hỗ-trợ) + - [Lộ trình](#lộ-trình) + - [Nhật ký thay đổi](#nhật-ký-thay-đổi) + - [Giấy phép](#giấy-phép) + + +## Tổng quan + +**@bootgs/utils** là một thư viện tiện ích TypeScript được xây dựng riêng cho **Google Apps Script**. Thư viện tập hợp +những hàm trợ giúp mà dự án GAS nào rồi cũng phải tự viết — thao tác với bảng tính và ký hiệu A1, kiểm tra kiểu và giá +trị (`isX`/`nonX`/`requireX`), biến đổi chuỗi và mảng, các ngoại lệ có kiểu, và nhiều hơn nữa — trong một gói duy nhất, +có tài liệu đầy đủ và được kiểm thử toàn diện. + +## Tính năng chính + +- **Xây dựng cho Google Apps Script** — được thiết kế xoay quanh runtime GAS và các giới hạn của nó, không phải chuyển + thể từ một thư viện Node.js chung chung. +- **Phạm vi tiện ích rộng** — các hàm trợ giúp cho bảng tính, UI, mạng và Admin SDK, bên cạnh các tiện ích đa dụng cho + chuỗi, mảng và đối tượng. +- **Ưu tiên TypeScript** — mọi hàm đều đi kèm định nghĩa kiểu đầy đủ để IDE tự động gợi ý và đảm bảo an toàn khi biên + dịch. +- **Được kiểm thử** — được bao phủ bởi bộ kiểm thử đơn vị Vitest. +- **Tài liệu tham chiếu có liên kết** — mọi kiểu Google Apps Script dùng trong API đều liên kết trực tiếp tới tài liệu + chính thức của nó. +- **Xử lý lỗi nhất quán** — một hệ thống phân cấp lớp ngoại lệ chuyên biệt thay cho các lỗi được ném ra tùy tiện. + +## Skill cho tác tử AI + +Với các nhóm đang dùng tác tử lập trình AI (Claude Code, Gemini CLI và các công cụ khác), kho mã +[bootgs/skills](https://github.com/bootgs/skills) cung cấp Agent Skill +[`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) mô tả thư viện này cho các tác +tử đó, bao gồm quy ước kiểm tra `isX`/`nonX`/`requireX`, các hàm trợ giúp cho ký hiệu A1 và trang tính, cho chuỗi, số +và mảng, các ngoại lệ có kiểu, cùng các hàm trợ giúp cho HTML, JSON và đường dẫn. + +Cài đặt với Claude Code: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +Cài đặt bằng CLI `npx skills`, hỗ trợ nhiều tác tử: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +Sau khi cài đặt, tác tử sẽ tự động áp dụng skill khi một tác vụ liên quan đến thư viện này. + +## Yêu cầu + +- [Node.js](https://nodejs.org/) v22.14.0 trở lên +- [npm](https://www.npmjs.com/) (hoặc một trình quản lý gói Node khác, ví dụ pnpm) + +## Cài đặt + +Cài đặt gói qua npm: + +```bash +npm install @bootgs/utils +``` + +## Tài liệu + +Tài liệu đầy đủ được xuất bản tại **** (bằng tiếng Anh): các hướng +dẫn, phần giới thiệu từng module và tài liệu tham chiếu đầy đủ của các hàm. Mã nguồn của tài liệu nằm trong +[`docs/writerside/`](docs/writerside/) và được build lại mỗi lần push lên `main`. + +Thứ tự đọc được đề xuất: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html) — những bước đầu tiên +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html) — quy ước + đặt tên `isX`/`nonX`/`requireX`/`requireNonX` +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html) — hệ thống phân cấp + lớp và nguyên nhân phát sinh từng ngoại lệ +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) — những hàm + trợ giúp nào gắn với một dịch vụ của Google, và điều đó có ý nghĩa gì đối với việc kiểm thử + +## Ví dụ sử dụng + +### Làm việc với trang tính + +Nối thêm nhiều hàng dữ liệu một cách hiệu quả: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Tiện ích Admin SDK + +Kiểm tra xem người dùng hiện tại có quyền quản trị hay không: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### Phân tích ký hiệu A1 + +Phân tích các ký hiệu A1 phức tạp thành các đối tượng có cấu trúc: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## Phát triển + +### Scripts + +Các script sau có sẵn trong `package.json`: + +| Script | Mô tả | +| :------------------- | :----------------------------------------------------------- | +| `npm run build` | Dọn thư mục `dist` và biên dịch mã nguồn TypeScript. | +| `npm run dev` | Khởi chạy Vitest ở chế độ theo dõi (watch). | +| `npm test` | Chạy toàn bộ bộ kiểm thử một lần. | +| `npm run type:check` | Kiểm tra kiểu của dự án mà không xuất ra kết quả build. | +| `npm run lint` | Kiểm tra mã nguồn bằng ESLint. | +| `npm run lint:fix` | Kiểm tra mã nguồn và tự động sửa những gì có thể. | +| `npm run format` | Kiểm tra định dạng bằng Prettier. | +| `npm run format:fix` | Định dạng mã nguồn bằng Prettier. | +| `npm run prepare` | Thiết lập Git hook của Husky (tự động chạy sau khi cài đặt). | + +### Kiểm thử + +Dự án sử dụng [Vitest](https://vitest.dev/) để kiểm thử đơn vị. + +Chạy toàn bộ bộ kiểm thử một lần: + +```bash +npm test +``` + +Hoặc chạy ở chế độ theo dõi trong khi phát triển: + +```bash +npm run dev +``` + +## Cấu trúc dự án + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## Hàm theo danh mục + +Tài liệu tham chiếu đầy đủ của các hàm đã được chuyển sang trang tài liệu, được build từ +[`docs/writerside/`](docs/writerside/) và xuất bản mỗi lần push lên `main`: + +**** + +| Phần | Nội dung | +| :------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets, Slides, Admin SDK, Drive, Docs, Forms, yêu cầu mạng và các lớp UI dựng sẵn | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | Kiểm tra kiểu và xác thực, thao tác với chuỗi, mảng và đối tượng, xử lý JSON và HTML | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | Các lớp ngoại lệ có kiểu và nguyên nhân phát sinh từng loại | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | Đường dẫn tệp và URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | Các thành phần dùng chung | + +Bên cạnh tài liệu tham chiếu, trang web còn có những hướng dẫn mà các bảng không thể trình bày hết: +[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) giải thích quy +ước `isX`/`nonX`/`requireX`/`requireNonX` tại một nơi duy nhất, +[exception handling](https://bootgs.github.io/utils/exception-handling.html) trình bày hệ thống +phân cấp lớp, còn [the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) +cho biết những hàm trợ giúp nào gắn với một dịch vụ của Google, điều đó tốn kém gì và có ý nghĩa gì đối với việc kiểm +thử. + +## Đóng góp + +Chúng tôi hoan nghênh mọi đóng góp. Xem hướng dẫn đầy đủ tại [CONTRIBUTING.md](CONTRIBUTING.md). Tóm tắt: + +1. Fork kho mã và tạo một nhánh cho tính năng hoặc bản sửa lỗi của bạn. +2. Thêm hoặc cập nhật kiểm thử để bao phủ các thay đổi của bạn. +3. Chạy `npm run lint` và `npm run format` trước khi commit. +4. Không chỉnh sửa `CHANGELOG.md` thủ công — tệp này được tạo tự động bởi [release-please](https://github.com/googleapis/release-please). +5. Mở một pull request mô tả những gì đã thay đổi và lý do. + +Hãy tuân theo phong cách mã và quy ước đặt tên hiện có. Xem [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) để biết các quy +tắc của cộng đồng. + +## Hỗ trợ + +- Đối với lỗi hoặc yêu cầu tính năng, hãy tìm kiếm hoặc mở một [issue](https://github.com/bootgs/utils/issues) + trên GitHub. +- Để xem các thay đổi gần đây, hãy xem [nhật ký thay đổi](CHANGELOG.md). +- Để báo cáo lỗ hổng bảo mật, hãy làm theo [chính sách bảo mật](SECURITY.md) thay vì mở một issue công khai. +- Để ủng hộ việc phát triển liên tục, hãy xem [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). + +## Lộ trình + +Những việc đã lên kế hoạch, đang thực hiện hoặc đã hoàn thành có trên [bảng dự án](https://github.com/users/MaksymStoianov/projects/2/views/2), +được xây dựng trực tiếp từ trình theo dõi issue. Không có tài liệu lộ trình riêng nào có thể bị lệch so với nó: để +đề xuất điều gì đó, hãy mở một [issue](https://github.com/bootgs/utils/issues). + +## Nhật ký thay đổi + +Để xem danh sách chi tiết các thay đổi theo từng phiên bản, hãy xem [CHANGELOG.md](CHANGELOG.md). + +## Giấy phép + +Dự án này được cấp phép theo Apache License 2.0. Xem [LICENSE](LICENSE) để biết chi tiết. + +Hình minh họa banner không thuộc phạm vi giấy phép đó. Đây là tác phẩm của tác giả, có thể được tái sử dụng mà không +chỉnh sửa với điều kiện ghi công tác giả kèm liên kết, và được điều chỉnh bởi +[docs/assets/images/README.md](docs/assets/images/README.md). + +## Nhãn hiệu + +Google Apps Script, Google Sheets, Google Slides, Google Docs, Google Forms và Google Drive là các nhãn hiệu của Google +LLC. Dự án này là một thư viện độc lập. Dự án không liên kết với, không được Google LLC xác nhận hay tài trợ, và các +nhãn hiệu chỉ được dùng để mô tả các sản phẩm mà thư viện hoạt động cùng. diff --git a/README.zh-TW.md b/README.zh-TW.md new file mode 100644 index 00000000..697c0e59 --- /dev/null +++ b/README.zh-TW.md @@ -0,0 +1,263 @@ + + +![Google Apps Script Utils 專案橫幅](docs/assets/images/banner-1280x640.jpg) + +

+ + 藝術家:Daryna Mikhailenko + +

+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | **繁體中文** + +> 本翻譯以 AI 輔助,依據版本 2.1.1 的 [README.md](README.md) 製作。參考版本為英文版 README;歡迎提出修正,請參閱 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)。 + +# Google Apps Script™ 工具函式庫 + +

+ npm version + npm downloads + Built with clasp + License + Security Policy + Roadmap + Latest release +

+ +

+ GitHub Stars + GitHub Fork + GitHub Sponsors +

+ + + +- [Google Apps Script™ 工具函式庫](#google-apps-script-工具函式庫) + - [概覽](#概覽) + - [主要功能](#主要功能) + - [AI 代理技能](#ai-代理技能) + - [系統需求](#系統需求) + - [安裝](#安裝) + - [文件](#文件) + - [使用範例](#使用範例) + - [開發](#開發) + - [指令碼](#指令碼) + - [測試](#測試) + - [專案結構](#專案結構) + - [依類別分類的函式](#依類別分類的函式) + - [參與貢獻](#參與貢獻) + - [支援](#支援) + - [路線圖](#路線圖) + - [變更紀錄](#變更紀錄) + - [授權條款](#授權條款) + + +## 概覽 + +**@bootgs/utils** 是專為 **Google Apps Script** 打造的 TypeScript 工具函式庫。每個 GAS 專案最後都得自己動手寫的輔助函式,例如試算表與 A1 表示法操作、型別與值的驗證(`isX`/`nonX`/`requireX`)、字串與陣列轉換、具型別的例外等,都集中在這個文件完善且經過完整測試的套件中。 + +## 主要功能 + +- **為 Google Apps Script 而打造**:圍繞 GAS 執行階段及其限制設計,而非從通用的 Node.js 函式庫改寫而來。 +- **涵蓋範圍廣泛**:除了通用的字串、陣列與物件工具,還提供試算表、UI、網路與 Admin SDK 的輔助函式。 +- **TypeScript 優先**:每個函式都附有完整的型別定義,支援 IDE 自動完成並提供編譯期的型別安全。 +- **經過測試**:由 Vitest 單元測試套件涵蓋。 +- **附連結的參考文件**:API 中用到的每個 Google Apps Script 型別都直接連結到其官方文件。 +- **一致的錯誤處理**:以專用的例外類別階層取代臨時拋出的錯誤。 + +## AI 代理技能 + +對於使用 AI 程式設計代理(Claude Code、Gemini CLI 等)的團隊,[bootgs/skills](https://github.com/bootgs/skills) 儲存庫提供 [`@bootgs/utils`](https://github.com/bootgs/skills/tree/main/skills/apps-script-utils) Agent Skill,為這類代理說明本函式庫,內容包括 `isX`/`nonX`/`requireX` 驗證慣例、A1 表示法與工作表輔助函式、字串/數字/陣列輔助函式、具型別的例外,以及 HTML/JSON/路徑輔助函式。 + +使用 Claude Code 安裝: + +```bash +/plugin marketplace add bootgs/skills +/plugin install apps-script-utils@bootgs-skills +``` + +使用支援多種代理的 `npx skills` CLI 安裝: + +```bash +npx skills add bootgs/skills --skill apps-script-utils +``` + +安裝完成後,只要任務與本函式庫有關,代理就會自動套用此技能。 + +## 系統需求 + +- [Node.js](https://nodejs.org/) v22.14.0 或更新版本 +- [npm](https://www.npmjs.com/)(或其他 Node 套件管理工具,例如 pnpm) + +## 安裝 + +透過 npm 安裝套件: + +```bash +npm install @bootgs/utils +``` + +## 文件 + +完整文件發布於 ****(英文),包含指南、各模組的逐步說明,以及完整的函式參考。其原始檔位於 [`docs/writerside/`](docs/writerside/),每次推送到 `main` 時都會重新建置。 + +建議的閱讀順序: + +- [Getting started](https://bootgs.github.io/utils/getting-started.html):入門 +- [Validation conventions](https://bootgs.github.io/utils/validation-conventions.html):`isX`/`nonX`/`requireX`/`requireNonX` 命名規則 +- [Exception handling](https://bootgs.github.io/utils/exception-handling.html):類別階層,以及各個例外的觸發情況 +- [The Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html):哪些輔助函式綁定 Google 服務,以及這對測試有什麼影響 + +## 使用範例 + +### 操作工作表 + +有效率地附加多列資料: + +```typescript +import { appendRows } from "@bootgs/utils"; + +const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); +const data = [ + ["John Doe", "john@example.com", 28], + ["Jane Smith", "jane@example.com", 32] +]; + +appendRows(sheet, data); +``` + +### Admin SDK 工具 + +檢查目前的使用者是否具有管理員權限: + +```typescript +import { isAdmin } from "@bootgs/utils"; + +if (isAdmin()) { + Logger.log("Access granted to admin panel."); +} else { + Logger.log("Access denied."); +} +``` + +### 解析 A1 表示法 + +將複雜的 A1 表示法解析為結構化物件: + +```typescript +import { parseA1Notation } from "@bootgs/utils"; + +const rangeInfo = parseA1Notation("'Sheet1'!A1:B10"); + +console.log(rangeInfo.sheetName); // "Sheet1" +console.log(rangeInfo.startRowIndex); // 0 +console.log(rangeInfo.endColumnIndex); // 2 +``` + +## 開發 + +### 指令碼 + +`package.json` 中提供下列指令碼: + +| 指令碼 | 說明 | +| :------------------- | :----------------------------------------------- | +| `npm run build` | 清除 `dist` 目錄並編譯 TypeScript 原始碼。 | +| `npm run dev` | 以監看模式啟動 Vitest。 | +| `npm test` | 執行一次完整的測試套件。 | +| `npm run type:check` | 對專案進行型別檢查,不產生輸出。 | +| `npm run lint` | 使用 ESLint 檢查程式碼。 | +| `npm run lint:fix` | 使用 ESLint 檢查程式碼,並自動修正可修正的問題。 | +| `npm run format` | 使用 Prettier 檢查格式。 | +| `npm run format:fix` | 使用 Prettier 格式化程式碼。 | +| `npm run prepare` | 設定 Husky 的 Git hooks(安裝後自動執行)。 | + +### 測試 + +本專案使用 [Vitest](https://vitest.dev/) 進行單元測試。 + +執行一次完整的測試套件: + +```bash +npm test +``` + +或在開發期間以監看模式執行: + +```bash +npm run dev +``` + +## 專案結構 + +```text +. +├── config/ # Configuration files +├── dist/ # Compiled output (after build) +├── docs/ # Documentation: assets and the Writerside source +├── scripts/ # Maintenance and helper scripts +├── src/ # Source code +│ ├── appsscript/ # Google Apps Script specific utilities +│ ├── exception/ # Custom exception classes +│ ├── html/ # HTML utilities +│ ├── json/ # JSON utilities +│ ├── lang/ # Language-level utilities (array, string, etc.) +│ ├── net/ # Network and path utilities +│ ├── time/ # Time-related utilities +│ └── index.ts # Main entry point +├── test/ # Unit tests +└── vitest.config.ts # Vitest configuration +``` + +## 依類別分類的函式 + +完整的函式參考已移至文件網站(英文)。該網站由 [`docs/writerside/`](docs/writerside/) 建置,每次推送到 `main` 時發布: + +**** + +| 章節 | 內容 | +| :------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------- | +| [Google Apps Script module](https://bootgs.github.io/utils/reference-appsscript.html) | Sheets、Slides、Admin SDK、Drive、Docs、Forms、網路請求,以及內建的 UI 類別 | +| [Base utilities](https://bootgs.github.io/utils/reference-base.html) | 型別檢查與驗證,字串、陣列與物件操作,JSON 與 HTML 處理 | +| [Exceptions](https://bootgs.github.io/utils/reference-exception.html) | 具型別的例外類別,以及各自的觸發情況 | +| [`path` module](https://bootgs.github.io/utils/reference-path.html) | 檔案路徑與 URL | +| [Abstracts and interfaces](https://bootgs.github.io/utils/reference-abstracts.html) | 共用的基礎元件 | + +除了參考資料之外,網站上還有表格無法容納的指南:[validation conventions](https://bootgs.github.io/utils/validation-conventions.html) 集中說明 `isX`/`nonX`/`requireX`/`requireNonX` 命名規則,[exception handling](https://bootgs.github.io/utils/exception-handling.html) 介紹類別階層,[the Apps Script runtime](https://bootgs.github.io/utils/apps-script-runtime.html) 則說明哪些輔助函式綁定 Google 服務、這樣做的代價,以及對測試的影響。 + +## 參與貢獻 + +歡迎參與貢獻。完整指南請參閱 [CONTRIBUTING.md](CONTRIBUTING.md)。簡要步驟如下: + +1. Fork 本儲存庫,並為你的新功能或錯誤修正建立分支。 +2. 新增或更新測試,以涵蓋你的變更。 +3. 提交(commit)前請執行 `npm run lint` 與 `npm run format`。 +4. 請勿手動編輯 `CHANGELOG.md`,它由 [release-please](https://github.com/googleapis/release-please) 自動產生。 +5. 開啟 pull request,說明變更了什麼以及原因。 + +請遵循既有的程式碼風格與命名慣例。社群準則請參閱 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 + +## 支援 + +- 如需回報錯誤或提出功能需求,請在 GitHub 上搜尋或開啟 [issue](https://github.com/bootgs/utils/issues)。 +- 近期的變更請參閱[變更紀錄](CHANGELOG.md)。 +- 如需回報安全漏洞,請依照[安全政策](SECURITY.md)辦理,不要開啟公開的 issue。 +- 如想支持專案的持續開發,請前往 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)。 + +## 路線圖 + +已規劃、進行中與已完成的項目都列在[專案看板](https://github.com/users/MaksymStoianov/projects/2/views/2)上,看板直接由 issue 追蹤系統產生。沒有另外維護、可能與之脫節的路線圖文件:如想提出建議,請開啟 [issue](https://github.com/bootgs/utils/issues)。 + +## 變更紀錄 + +依版本列出的詳細變更清單,請參閱 [CHANGELOG.md](CHANGELOG.md)。 + +## 授權條款 + +本專案採用 Apache License 2.0 授權。詳情請參閱 [LICENSE](LICENSE)。 + +橫幅插圖不在該授權範圍內。它是作者的作品,在標註作者並附上連結的前提下,可不經修改地重複使用,相關規範請見 [docs/assets/images/README.md](docs/assets/images/README.md)。 + +## 商標 + +Google Apps Script、Google Sheets、Google Slides、Google Docs、Google Forms 與 Google Drive 是 Google LLC 的商標。本專案是一個獨立的函式庫,與 Google LLC 沒有任何關聯,亦未獲其背書或贊助;這些商標僅用於說明本函式庫的適用對象。 diff --git a/README.zh.md b/README.zh.md index e84a1b36..a638fb19 100644 --- a/README.zh.md +++ b/README.zh.md @@ -8,7 +8,7 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | **中文** +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | **简体中文** | [繁體中文](README.zh-TW.md) > 本译文借助 AI 根据 2.1.1 版本的 [README.md](README.md) 翻译而成。以英文版 README 为准;欢迎指正——请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)。 diff --git a/scripts/check-readme-translations.mjs b/scripts/check-readme-translations.mjs index 16dd1c42..5094ed9b 100644 --- a/scripts/check-readme-translations.mjs +++ b/scripts/check-readme-translations.mjs @@ -38,8 +38,18 @@ const LANGUAGES = [ { code: "fr", name: "Français" }, { code: "es", name: "Español" }, { code: "pt", name: "Português" }, + { code: "it", name: "Italiano" }, + { code: "nl", name: "Nederlands" }, + { code: "pl", name: "Polski" }, + { code: "cs", name: "Čeština" }, + { code: "tr", name: "Türkçe" }, + { code: "ar", name: "العربية" }, + { code: "id", name: "Bahasa Indonesia" }, + { code: "vi", name: "Tiếng Việt" }, { code: "ja", name: "日本語" }, - { code: "zh", name: "中文" } + { code: "ko", name: "한국어" }, + { code: "zh", name: "简体中文" }, + { code: "zh-TW", name: "繁體中文" } ]; const fileOf = (code) => (code === "en" ? "README.md" : `README.${code}.md`); From bf9a5fc0e6384ae541552bdd08d38e4e74333de7 Mon Sep 17 00:00:00 2001 From: Maksym Stoianov Date: Tue, 3 Nov 2026 18:39:15 +0100 Subject: [PATCH 3/3] docs: move README translations to docs/readme The 18 README translations move from the repository root to docs/readme/, so the root keeps only README.md (English) next to the project files. The language switcher in README.md now links docs/readme/README..md; inside docs/readme/ the translations link each other by file name and English as ../../README.md, and every other relative link is rewritten to resolve from the new folder. npm always packs root README* files, so the published package shipped all translations; after the move it carries only README.md. check-readme-translations.mjs reads the translations from docs/readme/, expects the new switcher links and fails on any relative link whose target does not exist. CONTRIBUTING describes the new paths, the docs workflow no longer runs for changes under docs/readme/, and a stale anchor in the README table of contents is fixed. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Maksym Stoianov --- .github/workflows/docs.yml | 2 + CONTRIBUTING.md | 18 +++-- README.md | 4 +- README.ar.md => docs/readme/README.ar.md | 28 ++++---- README.cs.md => docs/readme/README.cs.md | 28 ++++---- README.de.md => docs/readme/README.de.md | 28 ++++---- README.es.md => docs/readme/README.es.md | 28 ++++---- README.fr.md => docs/readme/README.fr.md | 28 ++++---- README.id.md => docs/readme/README.id.md | 28 ++++---- README.it.md => docs/readme/README.it.md | 28 ++++---- README.ja.md => docs/readme/README.ja.md | 28 ++++---- README.ko.md => docs/readme/README.ko.md | 28 ++++---- README.nl.md => docs/readme/README.nl.md | 28 ++++---- README.pl.md => docs/readme/README.pl.md | 28 ++++---- README.pt.md => docs/readme/README.pt.md | 28 ++++---- README.ru.md => docs/readme/README.ru.md | 28 ++++---- README.tr.md => docs/readme/README.tr.md | 28 ++++---- README.uk.md => docs/readme/README.uk.md | 28 ++++---- README.vi.md => docs/readme/README.vi.md | 28 ++++---- .../readme/README.zh-TW.md | 28 ++++---- README.zh.md => docs/readme/README.zh.md | 28 ++++---- scripts/check-readme-translations.mjs | 68 ++++++++++++++++++- 22 files changed, 332 insertions(+), 264 deletions(-) rename README.ar.md => docs/readme/README.ar.md (89%) rename README.cs.md => docs/readme/README.cs.md (88%) rename README.de.md => docs/readme/README.de.md (89%) rename README.es.md => docs/readme/README.es.md (89%) rename README.fr.md => docs/readme/README.fr.md (89%) rename README.id.md => docs/readme/README.id.md (88%) rename README.it.md => docs/readme/README.it.md (89%) rename README.ja.md => docs/readme/README.ja.md (87%) rename README.ko.md => docs/readme/README.ko.md (86%) rename README.nl.md => docs/readme/README.nl.md (88%) rename README.pl.md => docs/readme/README.pl.md (88%) rename README.pt.md => docs/readme/README.pt.md (89%) rename README.ru.md => docs/readme/README.ru.md (90%) rename README.tr.md => docs/readme/README.tr.md (88%) rename README.uk.md => docs/readme/README.uk.md (90%) rename README.vi.md => docs/readme/README.vi.md (89%) rename README.zh-TW.md => docs/readme/README.zh-TW.md (86%) rename README.zh.md => docs/readme/README.zh.md (86%) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a702f3ea..3f80b7f9 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,6 +13,8 @@ on: pull_request: paths: - "docs/**" + # README translations live under docs/ but are not part of the site. + - "!docs/readme/**" - "scripts/docs/**" - ".github/workflows/docs.yml" workflow_dispatch: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5022aaf9..714b694a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -251,16 +251,19 @@ The project uses [Vitest](https://vitest.dev/) for testing. ### README Translations -`README.md` is the authoritative version. The `README..md` files next to it are AI-assisted translations of it -into Ukrainian (`uk`), Russian (`ru`), German (`de`), French (`fr`), Spanish (`es`), Portuguese (`pt`), Italian (`it`), -Dutch (`nl`), Polish (`pl`), Czech (`cs`), Turkish (`tr`), Arabic (`ar`), Indonesian (`id`), Vietnamese (`vi`), -Japanese (`ja`), Korean (`ko`), Simplified Chinese (`zh`) and Traditional Chinese (`zh-TW`). Corrections from native -speakers are welcome as ordinary pull requests. +`README.md` in the repository root is the authoritative version. The `docs/readme/README..md` files are +AI-assisted translations of it into Ukrainian (`uk`), Russian (`ru`), German (`de`), French (`fr`), Spanish (`es`), +Portuguese (`pt`), Italian (`it`), Dutch (`nl`), Polish (`pl`), Czech (`cs`), Turkish (`tr`), Arabic (`ar`), +Indonesian (`id`), Vietnamese (`vi`), Japanese (`ja`), Korean (`ko`), Simplified Chinese (`zh`) and Traditional +Chinese (`zh-TW`). Corrections from native speakers are welcome as ordinary pull requests. - **Keep the shape**: every README carries the same language switcher under the banner, and every translation has the same `##`/`###` headings as `README.md`. Translate prose only; code blocks, function names, commands, package names, URLs and badges stay as they are. Ukrainian, Russian, German and French link to their own documentation under `//`; the other languages link to the English documentation. +- **Links are relative to `docs/readme/`**: other translations are `README..md`, English is `../../README.md`, + repository-root files are `../../` (for example `../../CONTRIBUTING.md`) and paths under `docs/` drop the + prefix (for example `../writerside/`). - **Right-to-left languages**: the Arabic README wraps its prose in `
` … `
` blocks, with a blank line inside each wrapper so GitHub still renders the Markdown. Code blocks, badges, the scripts table and the switcher stay outside the wrappers, left to right; headings stay ordinary `##`/`###` lines. @@ -273,8 +276,9 @@ speakers are welcome as ordinary pull requests. ```bash npm run docs:check-i18n ``` - It fails when a translation is missing, lacks the switcher, has a different number of `##`/`###` headings than - `README.md`, or its note names a version other than the one in `package.json`. It does not compare wording. + It fails when a translation is missing, lacks the switcher, has a relative link to a file that does not exist, has + a different number of `##`/`###` headings than `README.md`, or its note names a version other than the one in + `package.json`. It does not compare wording. ## License diff --git a/README.md b/README.md index b833b28c..3801cdff 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

-**English** | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +**English** | [Українська](docs/readme/README.uk.md) | [Русский](docs/readme/README.ru.md) | [Deutsch](docs/readme/README.de.md) | [Français](docs/readme/README.fr.md) | [Español](docs/readme/README.es.md) | [Português](docs/readme/README.pt.md) | [Italiano](docs/readme/README.it.md) | [Nederlands](docs/readme/README.nl.md) | [Polski](docs/readme/README.pl.md) | [Čeština](docs/readme/README.cs.md) | [Türkçe](docs/readme/README.tr.md) | [العربية](docs/readme/README.ar.md) | [Bahasa Indonesia](docs/readme/README.id.md) | [Tiếng Việt](docs/readme/README.vi.md) | [日本語](docs/readme/README.ja.md) | [한국어](docs/readme/README.ko.md) | [简体中文](docs/readme/README.zh.md) | [繁體中文](docs/readme/README.zh-TW.md) # Utilities for Google Apps Script™ @@ -30,7 +30,7 @@ -- [Utilities for Google Apps Script™ projects](#utilities-for-google-apps-script-projects) +- [Utilities for Google Apps Script™ projects](#utilities-for-google-apps-script) - [Overview](#overview) - [Key Features](#key-features) - [AI Agent Skills](#ai-agent-skills) diff --git a/README.ar.md b/docs/readme/README.ar.md similarity index 89% rename from README.ar.md rename to docs/readme/README.ar.md index d1d7103b..8e5c8e05 100644 --- a/README.ar.md +++ b/docs/readme/README.ar.md @@ -1,6 +1,6 @@ -![شعار مشروع Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![شعار مشروع Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,11 +8,11 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | **العربية** | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | **العربية** | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md)
-> أُنجزت هذه الترجمة بمساعدة الذكاء الاصطناعي انطلاقًا من [README.md](README.md) للإصدار 2.1.1. النسخة المرجعية هي ملف README الإنجليزي؛ ونرحّب بالتصحيحات — راجع [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> أُنجزت هذه الترجمة بمساعدة الذكاء الاصطناعي انطلاقًا من [README.md](../../README.md) للإصدار 2.1.1. النسخة المرجعية هي ملف README الإنجليزي؛ ونرحّب بالتصحيحات — راجع [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # أدوات مساعدة لمشاريع Google Apps Script™ @@ -22,8 +22,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -127,7 +127,7 @@ npm install @bootgs/utils ## التوثيق التوثيق الكامل منشور على **** (بالإنجليزية): أدلة، وشروحات لكل وحدة، والمرجع -الكامل للدوال. يوجد مصدره في [`docs/writerside/`](docs/writerside/) ويُعاد بناؤه مع كل دفع (push) إلى `main`. +الكامل للدوال. يوجد مصدره في [`docs/writerside/`](../writerside/) ويُعاد بناؤه مع كل دفع (push) إلى `main`. ترتيب مقترح للقراءة: @@ -270,7 +270,7 @@ npm run dev ## الدوال حسب الفئة -انتقل المرجع الكامل للدوال إلى موقع التوثيق (بالإنجليزية)، الذي يُبنى من [`docs/writerside/`](docs/writerside/) +انتقل المرجع الكامل للدوال إلى موقع التوثيق (بالإنجليزية)، الذي يُبنى من [`docs/writerside/`](../writerside/) ويُنشر مع كل دفع (push) إلى `main`: **** @@ -291,7 +291,7 @@ npm run dev ## المساهمة -نرحّب بالمساهمات. راجع [CONTRIBUTING.md](CONTRIBUTING.md) للاطلاع على الدليل الكامل. باختصار: +نرحّب بالمساهمات. راجع [CONTRIBUTING.md](../../CONTRIBUTING.md) للاطلاع على الدليل الكامل. باختصار: 1. أنشئ نسخة (fork) من المستودع وفرعًا للميزة أو الإصلاح الذي تعمل عليه. 2. أضف اختبارات أو حدّثها لتغطية تغييراتك. @@ -299,15 +299,15 @@ npm run dev 4. لا تعدّل `CHANGELOG.md` يدويًا — فهو يُولَّد تلقائيًا بواسطة [release-please](https://github.com/googleapis/release-please). 5. افتح طلب دمج (pull request) يصف ما الذي تغيّر ولماذا. -اتبع أسلوب الشيفرة واصطلاحات التسمية المعتمدة. راجع [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) للاطلاع على قواعد +اتبع أسلوب الشيفرة واصطلاحات التسمية المعتمدة. راجع [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) للاطلاع على قواعد المجتمع. ## الدعم - للإبلاغ عن الأخطاء أو طلب الميزات، ابحث عن [issue](https://github.com/bootgs/utils/issues) أو افتح واحدة على GitHub. -- لمعرفة أحدث التغييرات، راجع [سجل التغييرات](CHANGELOG.md). -- للإبلاغ عن ثغرة أمنية، اتبع [سياسة الأمان](SECURITY.md) بدلًا من فتح issue عامة. +- لمعرفة أحدث التغييرات، راجع [سجل التغييرات](../../CHANGELOG.md). +- للإبلاغ عن ثغرة أمنية، اتبع [سياسة الأمان](../../SECURITY.md) بدلًا من فتح issue عامة. - لدعم استمرار التطوير، راجع [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## خارطة الطريق @@ -318,14 +318,14 @@ npm run dev ## سجل التغييرات -للاطلاع على قائمة مفصّلة بالتغييرات حسب الإصدار، راجع [CHANGELOG.md](CHANGELOG.md). +للاطلاع على قائمة مفصّلة بالتغييرات حسب الإصدار، راجع [CHANGELOG.md](../../CHANGELOG.md). ## الترخيص -هذا المشروع مرخّص بموجب Apache License 2.0. راجع [LICENSE](LICENSE) لمزيد من التفاصيل. +هذا المشروع مرخّص بموجب Apache License 2.0. راجع [LICENSE](../../LICENSE) لمزيد من التفاصيل. رسم الشعار ليس جزءًا من ذلك الترخيص. إنه من أعمال مؤلفته، ويجوز إعادة استخدامه دون تعديل مع ذكر اسم المؤلفة وربط -الإشارة إليها برابط، ويخضع لـ [docs/assets/images/README.md](docs/assets/images/README.md). +الإشارة إليها برابط، ويخضع لـ [docs/assets/images/README.md](../assets/images/README.md). ## العلامات التجارية diff --git a/README.cs.md b/docs/readme/README.cs.md similarity index 88% rename from README.cs.md rename to docs/readme/README.cs.md index 7704d57d..dba354a0 100644 --- a/README.cs.md +++ b/docs/readme/README.cs.md @@ -1,6 +1,6 @@ -![Banner projektu Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner projektu Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | **Čeština** | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | **Čeština** | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Tento překlad vznikl s pomocí AI z [README.md](README.md) pro verzi 2.1.1. Referenční verzí je anglické README; opravy jsou vítány — viz [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Tento překlad vznikl s pomocí AI z [README.md](../../README.md) pro verzi 2.1.1. Referenční verzí je anglické README; opravy jsou vítány — viz [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utility pro Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -112,7 +112,7 @@ npm install @bootgs/utils Úplná dokumentace je zveřejněna na **** (v angličtině): průvodci, procházky jednotlivými moduly a kompletní reference funkcí. Její zdroj je v -[`docs/writerside/`](docs/writerside/) a znovu se sestavuje při každém push do `main`. +[`docs/writerside/`](../writerside/) a znovu se sestavuje při každém push do `main`. Doporučené pořadí čtení: @@ -228,7 +228,7 @@ npm run dev ## Funkce podle kategorií Úplná reference funkcí se přesunula na web s dokumentací, který se sestavuje z -[`docs/writerside/`](docs/writerside/) a zveřejňuje při každém push do `main`: +[`docs/writerside/`](../writerside/) a zveřejňuje při každém push do `main`: **** @@ -249,7 +249,7 @@ vysvětluje, které pomocné funkce jsou vázány na službu Google, co to stoj ## Jak přispět -Příspěvky jsou vítány. Úplný návod najdete v [CONTRIBUTING.md](CONTRIBUTING.md). Ve zkratce: +Příspěvky jsou vítány. Úplný návod najdete v [CONTRIBUTING.md](../../CONTRIBUTING.md). Ve zkratce: 1. Vytvořte fork repozitáře a založte větev pro novou funkci nebo opravu chyby. 2. Přidejte nebo aktualizujte testy, které pokrývají vaše změny. @@ -258,14 +258,14 @@ Příspěvky jsou vítány. Úplný návod najdete v [CONTRIBUTING.md](CONTRIBUT 5. Otevřete pull request s popisem toho, co se změnilo a proč. Dodržujte stávající styl kódu a konvence pojmenování. Pravidla komunity najdete v -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Podpora - Chyby nebo požadavky na nové funkce vyhledejte nebo nahlaste jako [issue](https://github.com/bootgs/utils/issues) na GitHubu. -- Nedávné změny najdete v [seznamu změn](CHANGELOG.md). -- Bezpečnostní zranitelnost nahlaste podle [bezpečnostní politiky](SECURITY.md), nikoli ve veřejném issue. +- Nedávné změny najdete v [seznamu změn](../../CHANGELOG.md). +- Bezpečnostní zranitelnost nahlaste podle [bezpečnostní politiky](../../SECURITY.md), nikoli ve veřejném issue. - Chcete-li podpořit další vývoj, navštivte [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## Plán vývoje @@ -276,14 +276,14 @@ chcete-li něco navrhnout, otevřete [issue](https://github.com/bootgs/utils/iss ## Seznam změn -Podrobný seznam změn podle verzí najdete v [CHANGELOG.md](CHANGELOG.md). +Podrobný seznam změn podle verzí najdete v [CHANGELOG.md](../../CHANGELOG.md). ## Licence -Tento projekt je licencován pod licencí Apache License 2.0. Podrobnosti najdete v [LICENSE](LICENSE). +Tento projekt je licencován pod licencí Apache License 2.0. Podrobnosti najdete v [LICENSE](../../LICENSE). Ilustrace banneru není součástí této licence. Je dílem své autorky, smí být znovu použita bez úprav, pokud je autorka -uvedena a uvedení odkazuje na její stránky, a vztahuje se na ni [docs/assets/images/README.md](docs/assets/images/README.md). +uvedena a uvedení odkazuje na její stránky, a vztahuje se na ni [docs/assets/images/README.md](../assets/images/README.md). ## Ochranné známky diff --git a/README.de.md b/docs/readme/README.de.md similarity index 89% rename from README.de.md rename to docs/readme/README.de.md index 4c23c72a..ad1323a1 100644 --- a/README.de.md +++ b/docs/readme/README.de.md @@ -1,6 +1,6 @@ -![Projektbanner für Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Projektbanner für Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Diese Übersetzung wurde mit KI-Unterstützung aus [README.md](README.md) für Version 2.1.1 erstellt. Maßgeblich ist die englische README; Korrekturen sind willkommen — siehe [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Diese Übersetzung wurde mit KI-Unterstützung aus [README.md](../../README.md) für Version 2.1.1 erstellt. Maßgeblich ist die englische README; Korrekturen sind willkommen — siehe [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Werkzeuge für Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -113,7 +113,7 @@ npm install @bootgs/utils Die vollständige Dokumentation ist unter **** veröffentlicht — Anleitungen, Rundgänge durch die einzelnen Module und die komplette Funktionsreferenz. Ihre Quelle liegt in -[`docs/writerside-de/`](docs/writerside-de/) und wird bei jedem Push auf `main` neu gebaut. +[`docs/writerside-de/`](../writerside-de/) und wird bei jedem Push auf `main` neu gebaut. Eine sinnvolle Lesereihenfolge: @@ -229,7 +229,7 @@ npm run dev ## Funktionen nach Kategorie Die vollständige Funktionsreferenz ist auf die Dokumentationsseite umgezogen, die aus -[`docs/writerside-de/`](docs/writerside-de/) gebaut und bei jedem Push auf `main` veröffentlicht wird: +[`docs/writerside-de/`](../writerside-de/) gebaut und bei jedem Push auf `main` veröffentlicht wird: **** @@ -250,7 +250,7 @@ behandelt, welche Helfer an einen Google-Dienst gebunden sind, was das kostet un ## Mitwirken -Beiträge sind willkommen. Die vollständige Anleitung steht in [CONTRIBUTING.md](CONTRIBUTING.md). Kurz gefasst: +Beiträge sind willkommen. Die vollständige Anleitung steht in [CONTRIBUTING.md](../../CONTRIBUTING.md). Kurz gefasst: 1. Forken Sie das Repository und legen Sie einen Branch für Ihr Feature oder Ihren Bugfix an. 2. Fügen Sie Tests hinzu oder passen Sie sie an, sodass Ihre Änderungen abgedeckt sind. @@ -259,14 +259,14 @@ Beiträge sind willkommen. Die vollständige Anleitung steht in [CONTRIBUTING.md 5. Öffnen Sie einen Pull Request, der beschreibt, was sich geändert hat und warum. Halten Sie sich an den bestehenden Codestil und die Namenskonventionen. Die Regeln der Community stehen in -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Unterstützung - Für Fehlermeldungen oder Feature-Wünsche suchen oder eröffnen Sie ein [Issue](https://github.com/bootgs/utils/issues) auf GitHub. -- Die jüngsten Änderungen finden Sie im [Änderungsprotokoll](CHANGELOG.md). -- Um eine Sicherheitslücke zu melden, folgen Sie der [Sicherheitsrichtlinie](SECURITY.md), statt ein öffentliches +- Die jüngsten Änderungen finden Sie im [Änderungsprotokoll](../../CHANGELOG.md). +- Um eine Sicherheitslücke zu melden, folgen Sie der [Sicherheitsrichtlinie](../../SECURITY.md), statt ein öffentliches Issue zu eröffnen. - Die weitere Entwicklung können Sie über [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) unterstützen. @@ -278,15 +278,15 @@ nicht: Um etwas vorzuschlagen, eröffnen Sie ein [Issue](https://github.com/boot ## Änderungsprotokoll -Eine ausführliche Liste der Änderungen nach Version finden Sie in [CHANGELOG.md](CHANGELOG.md). +Eine ausführliche Liste der Änderungen nach Version finden Sie in [CHANGELOG.md](../../CHANGELOG.md). ## Lizenz -Dieses Projekt steht unter der Apache License 2.0. Einzelheiten finden Sie in [LICENSE](LICENSE). +Dieses Projekt steht unter der Apache License 2.0. Einzelheiten finden Sie in [LICENSE](../../LICENSE). Das Bannerbild fällt nicht unter diese Lizenz. Es ist das Werk seiner Urheberin, darf unverändert weiterverwendet werden, sofern die Urheberin genannt und die Nennung verlinkt wird, und ist in -[docs/assets/images/README.md](docs/assets/images/README.md) geregelt. +[docs/assets/images/README.md](../assets/images/README.md) geregelt. ## Marken diff --git a/README.es.md b/docs/readme/README.es.md similarity index 89% rename from README.es.md rename to docs/readme/README.es.md index b8daff73..cf8257a3 100644 --- a/README.es.md +++ b/docs/readme/README.es.md @@ -1,6 +1,6 @@ -![Banner del proyecto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner del proyecto Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Esta traducción se hizo con ayuda de IA a partir de [README.md](README.md) para la versión 2.1.1. La versión de referencia es el README en inglés; las correcciones son bienvenidas — consulta [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Esta traducción se hizo con ayuda de IA a partir de [README.md](../../README.md) para la versión 2.1.1. La versión de referencia es el README en inglés; las correcciones son bienvenidas — consulta [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utilidades para Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -114,7 +114,7 @@ npm install @bootgs/utils La documentación completa está publicada en **** (en inglés): guías, recorridos por cada módulo y la referencia completa de funciones. Su código fuente está en -[`docs/writerside/`](docs/writerside/) y se reconstruye con cada push a `main`. +[`docs/writerside/`](../writerside/) y se reconstruye con cada push a `main`. Un buen orden de lectura: @@ -230,7 +230,7 @@ npm run dev ## Funciones por categoría La referencia completa de funciones se ha trasladado al sitio de documentación, que se genera a partir de -[`docs/writerside/`](docs/writerside/) y se publica con cada push a `main`: +[`docs/writerside/`](../writerside/) y se publica con cada push a `main`: **** @@ -251,7 +251,7 @@ explica qué funciones dependen de un servicio de Google, qué cuesta eso y qué ## Cómo contribuir -Las contribuciones son bienvenidas. Consulta la guía completa en [CONTRIBUTING.md](CONTRIBUTING.md). En resumen: +Las contribuciones son bienvenidas. Consulta la guía completa en [CONTRIBUTING.md](../../CONTRIBUTING.md). En resumen: 1. Haz un fork del repositorio y crea una rama para tu funcionalidad o corrección. 2. Añade o actualiza las pruebas que cubren tus cambios. @@ -260,14 +260,14 @@ Las contribuciones son bienvenidas. Consulta la guía completa en [CONTRIBUTING. 5. Abre una pull request que describa qué ha cambiado y por qué. Sigue el estilo de código y las convenciones de nombres existentes. Las normas de la comunidad están en -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Soporte - Para errores o solicitudes de funcionalidades, busca o abre una [issue](https://github.com/bootgs/utils/issues) en GitHub. -- Para los cambios recientes, consulta el [registro de cambios](CHANGELOG.md). -- Para informar de una vulnerabilidad de seguridad, sigue la [política de seguridad](SECURITY.md) en lugar de abrir +- Para los cambios recientes, consulta el [registro de cambios](../../CHANGELOG.md). +- Para informar de una vulnerabilidad de seguridad, sigue la [política de seguridad](../../SECURITY.md) en lugar de abrir una issue pública. - Para apoyar el desarrollo continuo, consulta [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -279,15 +279,15 @@ desfasado: para proponer algo, abre una [issue](https://github.com/bootgs/utils/ ## Registro de cambios -Para ver la lista detallada de cambios por versión, consulta [CHANGELOG.md](CHANGELOG.md). +Para ver la lista detallada de cambios por versión, consulta [CHANGELOG.md](../../CHANGELOG.md). ## Licencia -Este proyecto se distribuye bajo la licencia Apache License 2.0. Consulta [LICENSE](LICENSE) para más detalles. +Este proyecto se distribuye bajo la licencia Apache License 2.0. Consulta [LICENSE](../../LICENSE) para más detalles. La ilustración del banner no forma parte de esa licencia. Es obra de su autora, puede reutilizarse sin modificaciones siempre que se cite a la autora con un enlace, y se rige por -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Marcas comerciales diff --git a/README.fr.md b/docs/readme/README.fr.md similarity index 89% rename from README.fr.md rename to docs/readme/README.fr.md index bcb37948..1a1b27dc 100644 --- a/README.fr.md +++ b/docs/readme/README.fr.md @@ -1,6 +1,6 @@ -![Bannière du projet Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Bannière du projet Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Cette traduction a été réalisée avec l'aide de l'IA à partir de [README.md](README.md) pour la version 2.1.1. Le README anglais fait foi ; les corrections sont les bienvenues — voir [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Cette traduction a été réalisée avec l'aide de l'IA à partir de [README.md](../../README.md) pour la version 2.1.1. Le README anglais fait foi ; les corrections sont les bienvenues — voir [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utilitaires pour Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -115,7 +115,7 @@ npm install @bootgs/utils La documentation complète est publiée sur **** — guides, présentations de chaque module et référence complète des fonctions. Sa source se trouve dans -[`docs/writerside-fr/`](docs/writerside-fr/) et est reconstruite à chaque push sur `main`. +[`docs/writerside-fr/`](../writerside-fr/) et est reconstruite à chaque push sur `main`. Un bon ordre de lecture : @@ -231,7 +231,7 @@ npm run dev ## Fonctions par catégorie La référence complète des fonctions a été déplacée sur le site de documentation, construit à partir de -[`docs/writerside-fr/`](docs/writerside-fr/) et publié à chaque push sur `main` : +[`docs/writerside-fr/`](../writerside-fr/) et publié à chaque push sur `main` : **** @@ -252,7 +252,7 @@ indique quelles fonctions sont liées à un service Google, ce que cela coûte e ## Contribuer -Les contributions sont les bienvenues. Le guide complet se trouve dans [CONTRIBUTING.md](CONTRIBUTING.md). En résumé : +Les contributions sont les bienvenues. Le guide complet se trouve dans [CONTRIBUTING.md](../../CONTRIBUTING.md). En résumé : 1. Forkez le dépôt et créez une branche pour votre fonctionnalité ou votre correctif. 2. Ajoutez ou mettez à jour les tests qui couvrent vos modifications. @@ -261,14 +261,14 @@ Les contributions sont les bienvenues. Le guide complet se trouve dans [CONTRIBU 5. Ouvrez une pull request qui décrit ce qui a changé et pourquoi. Respectez le style de code et les conventions de nommage existants. Les règles de la communauté se trouvent dans -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Assistance - Pour signaler un bug ou proposer une fonctionnalité, recherchez ou ouvrez une [issue](https://github.com/bootgs/utils/issues) sur GitHub. -- Pour les changements récents, consultez le [journal des modifications](CHANGELOG.md). -- Pour signaler une vulnérabilité, suivez la [politique de sécurité](SECURITY.md) plutôt que d'ouvrir une issue +- Pour les changements récents, consultez le [journal des modifications](../../CHANGELOG.md). +- Pour signaler une vulnérabilité, suivez la [politique de sécurité](../../SECURITY.md) plutôt que d'ouvrir une issue publique. - Pour soutenir le développement, voir [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -280,15 +280,15 @@ s'en écarter : pour proposer quelque chose, ouvrez une [issue](https://github.c ## Journal des modifications -Pour la liste détaillée des changements par version, voir [CHANGELOG.md](CHANGELOG.md). +Pour la liste détaillée des changements par version, voir [CHANGELOG.md](../../CHANGELOG.md). ## Licence -Ce projet est distribué sous la licence Apache License 2.0. Voir [LICENSE](LICENSE) pour plus de détails. +Ce projet est distribué sous la licence Apache License 2.0. Voir [LICENSE](../../LICENSE) pour plus de détails. L'illustration de la bannière n'est pas couverte par cette licence. Elle est l'œuvre de son autrice, peut être réutilisée sans modification à condition de créditer l'autrice avec un lien, et relève de -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Marques diff --git a/README.id.md b/docs/readme/README.id.md similarity index 88% rename from README.id.md rename to docs/readme/README.id.md index 671a62da..278f1d23 100644 --- a/README.id.md +++ b/docs/readme/README.id.md @@ -1,6 +1,6 @@ -![Banner proyek Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner proyek Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | **Bahasa Indonesia** | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | **Bahasa Indonesia** | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Terjemahan ini dibuat dengan bantuan AI dari [README.md](README.md) untuk versi 2.1.1. Versi acuannya adalah README berbahasa Inggris; koreksi sangat kami harapkan — lihat [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Terjemahan ini dibuat dengan bantuan AI dari [README.md](../../README.md) untuk versi 2.1.1. Versi acuannya adalah README berbahasa Inggris; koreksi sangat kami harapkan — lihat [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utilitas untuk Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -111,7 +111,7 @@ npm install @bootgs/utils ## Dokumentasi Dokumentasi lengkap diterbitkan di **** (dalam bahasa Inggris): panduan, penjelasan -per modul, dan referensi fungsi selengkapnya. Sumbernya ada di [`docs/writerside/`](docs/writerside/) dan dibangun +per modul, dan referensi fungsi selengkapnya. Sumbernya ada di [`docs/writerside/`](../writerside/) dan dibangun ulang pada setiap push ke `main`. Urutan membaca yang disarankan: @@ -228,7 +228,7 @@ npm run dev ## Fungsi per kategori Referensi fungsi selengkapnya telah dipindahkan ke situs dokumentasi, yang dibangun dari -[`docs/writerside/`](docs/writerside/) dan diterbitkan pada setiap push ke `main`: +[`docs/writerside/`](../writerside/) dan diterbitkan pada setiap push ke `main`: **** @@ -249,7 +249,7 @@ terikat pada layanan Google, apa konsekuensinya, dan apa artinya bagi pengujian. ## Berkontribusi -Kontribusi sangat kami sambut. Panduan lengkapnya ada di [CONTRIBUTING.md](CONTRIBUTING.md). Ringkasnya: +Kontribusi sangat kami sambut. Panduan lengkapnya ada di [CONTRIBUTING.md](../../CONTRIBUTING.md). Ringkasnya: 1. Fork repositori dan buat branch untuk fitur atau perbaikan bug Anda. 2. Tambahkan atau perbarui pengujian yang mencakup perubahan Anda. @@ -257,13 +257,13 @@ Kontribusi sangat kami sambut. Panduan lengkapnya ada di [CONTRIBUTING.md](CONTR 4. Jangan mengedit `CHANGELOG.md` secara manual — file ini dibuat otomatis oleh [release-please](https://github.com/googleapis/release-please). 5. Buka pull request yang menjelaskan apa yang berubah dan alasannya. -Ikuti gaya kode dan konvensi penamaan yang sudah ada. Pedoman komunitas ada di [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +Ikuti gaya kode dan konvensi penamaan yang sudah ada. Pedoman komunitas ada di [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Dukungan - Untuk bug atau permintaan fitur, cari atau buka [issue](https://github.com/bootgs/utils/issues) di GitHub. -- Untuk perubahan terbaru, lihat [catatan perubahan](CHANGELOG.md). -- Untuk melaporkan kerentanan keamanan, ikuti [kebijakan keamanan](SECURITY.md) alih-alih membuka issue publik. +- Untuk perubahan terbaru, lihat [catatan perubahan](../../CHANGELOG.md). +- Untuk melaporkan kerentanan keamanan, ikuti [kebijakan keamanan](../../SECURITY.md) alih-alih membuka issue publik. - Untuk mendukung pengembangan yang berkelanjutan, lihat [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## Peta jalan @@ -275,15 +275,15 @@ Tidak ada dokumen peta jalan terpisah yang bisa tertinggal darinya: untuk mengus ## Catatan perubahan -Untuk daftar perubahan per versi secara terperinci, lihat [CHANGELOG.md](CHANGELOG.md). +Untuk daftar perubahan per versi secara terperinci, lihat [CHANGELOG.md](../../CHANGELOG.md). ## Lisensi -Proyek ini dilisensikan di bawah Apache License 2.0. Lihat [LICENSE](LICENSE) untuk detailnya. +Proyek ini dilisensikan di bawah Apache License 2.0. Lihat [LICENSE](../../LICENSE) untuk detailnya. Karya seni banner tidak termasuk dalam lisensi tersebut. Karya ini milik pembuatnya, boleh digunakan ulang tanpa diubah dengan mencantumkan nama pembuat beserta tautannya, dan diatur oleh -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Merek dagang diff --git a/README.it.md b/docs/readme/README.it.md similarity index 89% rename from README.it.md rename to docs/readme/README.it.md index 886e4a29..6aa1783c 100644 --- a/README.it.md +++ b/docs/readme/README.it.md @@ -1,6 +1,6 @@ -![Banner del progetto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner del progetto Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **Italiano** | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **Italiano** | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Questa traduzione è stata realizzata con l'aiuto dell'IA a partire da [README.md](README.md) per la versione 2.1.1. La versione di riferimento è il README in inglese; le correzioni sono benvenute — consulta [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Questa traduzione è stata realizzata con l'aiuto dell'IA a partire da [README.md](../../README.md) per la versione 2.1.1. La versione di riferimento è il README in inglese; le correzioni sono benvenute — consulta [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utility per Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -113,7 +113,7 @@ npm install @bootgs/utils La documentazione completa è pubblicata su **** (in inglese): guide, percorsi dedicati a ogni modulo e il riferimento completo delle funzioni. Il suo sorgente si trova in -[`docs/writerside/`](docs/writerside/) e viene ricostruito a ogni push su `main`. +[`docs/writerside/`](../writerside/) e viene ricostruito a ogni push su `main`. Un buon ordine di lettura: @@ -229,7 +229,7 @@ npm run dev ## Funzioni per categoria Il riferimento completo delle funzioni è stato spostato sul sito della documentazione, generato a partire da -[`docs/writerside/`](docs/writerside/) e pubblicato a ogni push su `main`: +[`docs/writerside/`](../writerside/) e pubblicato a ogni push su `main`: **** @@ -250,7 +250,7 @@ spiega quali funzioni sono legate a un servizio Google, quanto costa questo lega ## Come contribuire -I contributi sono benvenuti. La guida completa è in [CONTRIBUTING.md](CONTRIBUTING.md). In sintesi: +I contributi sono benvenuti. La guida completa è in [CONTRIBUTING.md](../../CONTRIBUTING.md). In sintesi: 1. Fai un fork del repository e crea un branch per la tua funzionalità o correzione. 2. Aggiungi o aggiorna i test che coprono le tue modifiche. @@ -259,14 +259,14 @@ I contributi sono benvenuti. La guida completa è in [CONTRIBUTING.md](CONTRIBUT 5. Apri una pull request che descriva cosa è cambiato e perché. Segui lo stile del codice e le convenzioni di denominazione esistenti. Le linee guida della comunità sono in -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Supporto - Per bug o richieste di funzionalità, cerca o apri una [issue](https://github.com/bootgs/utils/issues) su GitHub. -- Per le modifiche recenti, consulta il [registro delle modifiche](CHANGELOG.md). -- Per segnalare una vulnerabilità di sicurezza, segui la [politica di sicurezza](SECURITY.md) invece di aprire una +- Per le modifiche recenti, consulta il [registro delle modifiche](../../CHANGELOG.md). +- Per segnalare una vulnerabilità di sicurezza, segui la [politica di sicurezza](../../SECURITY.md) invece di aprire una issue pubblica. - Per sostenere lo sviluppo continuo, consulta [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -278,15 +278,15 @@ disallinearsi: per proporre qualcosa, apri una [issue](https://github.com/bootgs ## Registro delle modifiche -Per l'elenco dettagliato delle modifiche per versione, consulta [CHANGELOG.md](CHANGELOG.md). +Per l'elenco dettagliato delle modifiche per versione, consulta [CHANGELOG.md](../../CHANGELOG.md). ## Licenza -Questo progetto è distribuito con licenza Apache License 2.0. Consulta [LICENSE](LICENSE) per i dettagli. +Questo progetto è distribuito con licenza Apache License 2.0. Consulta [LICENSE](../../LICENSE) per i dettagli. L'illustrazione del banner non rientra in tale licenza. È opera della sua autrice, può essere riutilizzata senza modifiche citando l'autrice con un link, ed è disciplinata da -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Marchi diff --git a/README.ja.md b/docs/readme/README.ja.md similarity index 87% rename from README.ja.md rename to docs/readme/README.ja.md index 445283bd..5f012d5a 100644 --- a/README.ja.md +++ b/docs/readme/README.ja.md @@ -1,6 +1,6 @@ -![Google Apps Script Utils プロジェクトのバナー](docs/assets/images/banner-1280x640.jpg) +![Google Apps Script Utils プロジェクトのバナー](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | **日本語** | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | **日本語** | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> この翻訳は、バージョン 2.1.1 の [README.md](README.md) をもとに AI の支援を受けて作成しました。正式な内容は英語版 README です。修正の提案を歓迎します。詳しくは [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations) をご覧ください。 +> この翻訳は、バージョン 2.1.1 の [README.md](../../README.md) をもとに AI の支援を受けて作成しました。正式な内容は英語版 README です。修正の提案を歓迎します。詳しくは [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations) をご覧ください。 # Google Apps Script™ 向けユーティリティ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -99,7 +99,7 @@ npm install @bootgs/utils ## ドキュメント -完全なドキュメントは ****(英語)で公開しています。ガイド、モジュールごとの解説、関数リファレンスのすべてが含まれます。ソースは [`docs/writerside/`](docs/writerside/) にあり、`main` への push のたびに再ビルドされます。 +完全なドキュメントは ****(英語)で公開しています。ガイド、モジュールごとの解説、関数リファレンスのすべてが含まれます。ソースは [`docs/writerside/`](../writerside/) にあり、`main` への push のたびに再ビルドされます。 おすすめの読む順番: @@ -211,7 +211,7 @@ npm run dev ## カテゴリ別の関数 -関数リファレンスの全体はドキュメントサイトに移りました。サイトは [`docs/writerside/`](docs/writerside/) からビルドされ、`main` への push のたびに公開されます: +関数リファレンスの全体はドキュメントサイトに移りました。サイトは [`docs/writerside/`](../writerside/) からビルドされ、`main` への push のたびに公開されます: **** @@ -227,7 +227,7 @@ npm run dev ## コントリビューション -コントリビューションを歓迎します。詳しいガイドは [CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。概要は次のとおりです: +コントリビューションを歓迎します。詳しいガイドは [CONTRIBUTING.md](../../CONTRIBUTING.md) をご覧ください。概要は次のとおりです: 1. リポジトリをフォークし、機能追加やバグ修正用のブランチを作成します。 2. 変更をカバーするテストを追加または更新します。 @@ -235,13 +235,13 @@ npm run dev 4. `CHANGELOG.md` は手で編集しないでください。[release-please](https://github.com/googleapis/release-please) が自動生成します。 5. 何をなぜ変更したかを説明した pull request を作成します。 -既存のコードスタイルと命名規則に従ってください。コミュニティのガイドラインは [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) にあります。 +既存のコードスタイルと命名規則に従ってください。コミュニティのガイドラインは [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) にあります。 ## サポート - バグ報告や機能要望は、GitHub で [issue](https://github.com/bootgs/utils/issues) を検索するか新しく作成してください。 -- 最近の変更は [変更履歴](CHANGELOG.md) をご覧ください。 -- セキュリティ上の脆弱性は、公開 issue を作成せず [セキュリティポリシー](SECURITY.md) に従って報告してください。 +- 最近の変更は [変更履歴](../../CHANGELOG.md) をご覧ください。 +- セキュリティ上の脆弱性は、公開 issue を作成せず [セキュリティポリシー](../../SECURITY.md) に従って報告してください。 - 継続的な開発を支援するには [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) をご覧ください。 ## ロードマップ @@ -250,13 +250,13 @@ npm run dev ## 変更履歴 -バージョンごとの詳しい変更内容は [CHANGELOG.md](CHANGELOG.md) をご覧ください。 +バージョンごとの詳しい変更内容は [CHANGELOG.md](../../CHANGELOG.md) をご覧ください。 ## ライセンス -このプロジェクトは Apache License 2.0 の下でライセンスされています。詳しくは [LICENSE](LICENSE) をご覧ください。 +このプロジェクトは Apache License 2.0 の下でライセンスされています。詳しくは [LICENSE](../../LICENSE) をご覧ください。 -バナーのイラストはこのライセンスの対象外です。作者の著作物であり、作者のクレジットとそのリンクを表示すれば改変せずに再利用でき、その条件は [docs/assets/images/README.md](docs/assets/images/README.md) に定められています。 +バナーのイラストはこのライセンスの対象外です。作者の著作物であり、作者のクレジットとそのリンクを表示すれば改変せずに再利用でき、その条件は [docs/assets/images/README.md](../assets/images/README.md) に定められています。 ## 商標 diff --git a/README.ko.md b/docs/readme/README.ko.md similarity index 86% rename from README.ko.md rename to docs/readme/README.ko.md index ecc179cc..1609f92a 100644 --- a/README.ko.md +++ b/docs/readme/README.ko.md @@ -1,6 +1,6 @@ -![Google Apps Script Utils 프로젝트 배너](docs/assets/images/banner-1280x640.jpg) +![Google Apps Script Utils 프로젝트 배너](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | **한국어** | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | **한국어** | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> 이 번역은 버전 2.1.1의 [README.md](README.md)를 바탕으로 AI의 도움을 받아 작성했습니다. 기준이 되는 버전은 영어 README이며, 수정 제안을 환영합니다. 자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)를 참고하세요. +> 이 번역은 버전 2.1.1의 [README.md](../../README.md)를 바탕으로 AI의 도움을 받아 작성했습니다. 기준이 되는 버전은 영어 README이며, 수정 제안을 환영합니다. 자세한 내용은 [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations)를 참고하세요. # Google Apps Script™용 유틸리티 @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -99,7 +99,7 @@ npm install @bootgs/utils ## 문서 -전체 문서는 ****(영어)에 게시되어 있습니다. 가이드, 모듈별 안내, 전체 함수 레퍼런스를 담고 있습니다. 소스는 [`docs/writerside/`](docs/writerside/)에 있으며 `main`에 push할 때마다 다시 빌드됩니다. +전체 문서는 ****(영어)에 게시되어 있습니다. 가이드, 모듈별 안내, 전체 함수 레퍼런스를 담고 있습니다. 소스는 [`docs/writerside/`](../writerside/)에 있으며 `main`에 push할 때마다 다시 빌드됩니다. 추천하는 읽는 순서: @@ -211,7 +211,7 @@ npm run dev ## 카테고리별 함수 -전체 함수 레퍼런스는 문서 사이트(영어)로 옮겨졌습니다. 이 사이트는 [`docs/writerside/`](docs/writerside/)에서 빌드되며 `main`에 push할 때마다 게시됩니다. +전체 함수 레퍼런스는 문서 사이트(영어)로 옮겨졌습니다. 이 사이트는 [`docs/writerside/`](../writerside/)에서 빌드되며 `main`에 push할 때마다 게시됩니다. **** @@ -227,7 +227,7 @@ npm run dev ## 기여하기 -기여를 환영합니다. 전체 가이드는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요. 요약하면 다음과 같습니다. +기여를 환영합니다. 전체 가이드는 [CONTRIBUTING.md](../../CONTRIBUTING.md)를 참고하세요. 요약하면 다음과 같습니다. 1. 저장소를 포크하고 기능 추가나 버그 수정을 위한 브랜치를 만듭니다. 2. 변경 사항을 검증하는 테스트를 추가하거나 업데이트합니다. @@ -235,13 +235,13 @@ npm run dev 4. `CHANGELOG.md`는 직접 수정하지 마세요. [release-please](https://github.com/googleapis/release-please)가 자동으로 생성합니다. 5. 무엇을 왜 변경했는지 설명하는 풀 리퀘스트를 엽니다. -기존 코드 스타일과 명명 규칙을 따라 주세요. 커뮤니티 가이드라인은 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)를 참고하세요. +기존 코드 스타일과 명명 규칙을 따라 주세요. 커뮤니티 가이드라인은 [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md)를 참고하세요. ## 지원 - 버그 신고나 기능 요청은 GitHub에서 [이슈](https://github.com/bootgs/utils/issues)를 검색하거나 새로 등록해 주세요. -- 최근 변경 사항은 [변경 이력](CHANGELOG.md)을 참고하세요. -- 보안 취약점은 공개 이슈를 여는 대신 [보안 정책](SECURITY.md)에 따라 신고해 주세요. +- 최근 변경 사항은 [변경 이력](../../CHANGELOG.md)을 참고하세요. +- 보안 취약점은 공개 이슈를 여는 대신 [보안 정책](../../SECURITY.md)에 따라 신고해 주세요. - 지속적인 개발을 후원하려면 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)를 참고하세요. ## 로드맵 @@ -250,13 +250,13 @@ npm run dev ## 변경 이력 -버전별 변경 사항의 자세한 목록은 [CHANGELOG.md](CHANGELOG.md)를 참고하세요. +버전별 변경 사항의 자세한 목록은 [CHANGELOG.md](../../CHANGELOG.md)를 참고하세요. ## 라이선스 -이 프로젝트는 Apache License 2.0에 따라 배포됩니다. 자세한 내용은 [LICENSE](LICENSE)를 참고하세요. +이 프로젝트는 Apache License 2.0에 따라 배포됩니다. 자세한 내용은 [LICENSE](../../LICENSE)를 참고하세요. -배너 일러스트는 이 라이선스에 포함되지 않습니다. 이 작품은 작가의 저작물로, 작가를 표기하고 그 표기에 링크를 걸면 수정하지 않은 상태로 재사용할 수 있으며, [docs/assets/images/README.md](docs/assets/images/README.md)의 적용을 받습니다. +배너 일러스트는 이 라이선스에 포함되지 않습니다. 이 작품은 작가의 저작물로, 작가를 표기하고 그 표기에 링크를 걸면 수정하지 않은 상태로 재사용할 수 있으며, [docs/assets/images/README.md](../assets/images/README.md)의 적용을 받습니다. ## 상표 diff --git a/README.nl.md b/docs/readme/README.nl.md similarity index 88% rename from README.nl.md rename to docs/readme/README.nl.md index 4b2e81b5..dc68e841 100644 --- a/README.nl.md +++ b/docs/readme/README.nl.md @@ -1,6 +1,6 @@ -![Projectbanner van Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Projectbanner van Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | **Nederlands** | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | **Nederlands** | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Deze vertaling is met behulp van AI gemaakt op basis van [README.md](README.md) voor versie 2.1.1. De referentieversie is de Engelse README; correcties zijn welkom — zie [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Deze vertaling is met behulp van AI gemaakt op basis van [README.md](../../README.md) voor versie 2.1.1. De referentieversie is de Engelse README; correcties zijn welkom — zie [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Hulpprogramma's voor Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -111,7 +111,7 @@ npm install @bootgs/utils ## Documentatie De volledige documentatie staat op **** (in het Engels): handleidingen, uitleg per -module en de complete functiereferentie. De bron staat in [`docs/writerside/`](docs/writerside/) en wordt bij elke +module en de complete functiereferentie. De bron staat in [`docs/writerside/`](../writerside/) en wordt bij elke push naar `main` opnieuw gebouwd. Een goede leesvolgorde: @@ -228,7 +228,7 @@ npm run dev ## Functies per categorie De volledige functiereferentie is verhuisd naar de documentatiesite (in het Engels), die wordt gebouwd vanuit -[`docs/writerside/`](docs/writerside/) en bij elke push naar `main` wordt gepubliceerd: +[`docs/writerside/`](../writerside/) en bij elke push naar `main` wordt gepubliceerd: **** @@ -249,7 +249,7 @@ een Google-service gebonden zijn, wat dat kost en wat het betekent voor het test ## Bijdragen -Bijdragen zijn welkom. Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor de volledige handleiding. Kort samengevat: +Bijdragen zijn welkom. Zie [CONTRIBUTING.md](../../CONTRIBUTING.md) voor de volledige handleiding. Kort samengevat: 1. Fork de repository en maak een branch aan voor je feature of bugfix. 2. Voeg tests toe of werk ze bij zodat ze je wijzigingen dekken. @@ -257,14 +257,14 @@ Bijdragen zijn welkom. Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor de volledige 4. Bewerk `CHANGELOG.md` niet handmatig: het bestand wordt automatisch gegenereerd door [release-please](https://github.com/googleapis/release-please). 5. Open een pull request waarin je beschrijft wat er is veranderd en waarom. -Volg de bestaande codestijl en naamgevingsconventies. Zie [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) voor de +Volg de bestaande codestijl en naamgevingsconventies. Zie [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) voor de gemeenschapsrichtlijnen. ## Ondersteuning - Voor bugs of featureverzoeken: zoek of open een [issue](https://github.com/bootgs/utils/issues) op GitHub. -- Voor recente wijzigingen: zie de [changelog](CHANGELOG.md). -- Om een beveiligingsprobleem te melden, volg je het [beveiligingsbeleid](SECURITY.md) in plaats van een openbare +- Voor recente wijzigingen: zie de [changelog](../../CHANGELOG.md). +- Om een beveiligingsprobleem te melden, volg je het [beveiligingsbeleid](../../SECURITY.md) in plaats van een openbare issue te openen. - Om de verdere ontwikkeling te steunen: zie [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -276,15 +276,15 @@ gaan lopen: wil je iets voorstellen, open dan een [issue](https://github.com/boo ## Changelog -Een gedetailleerde lijst met wijzigingen per versie vind je in [CHANGELOG.md](CHANGELOG.md). +Een gedetailleerde lijst met wijzigingen per versie vind je in [CHANGELOG.md](../../CHANGELOG.md). ## Licentie -Dit project valt onder de Apache License 2.0. Zie [LICENSE](LICENSE) voor details. +Dit project valt onder de Apache License 2.0. Zie [LICENSE](../../LICENSE) voor details. De bannerillustratie valt niet onder die licentie. Het is het werk van de maker, mag ongewijzigd worden hergebruikt mits de maker wordt vermeld en die vermelding een link bevat, en valt onder -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Handelsmerken diff --git a/README.pl.md b/docs/readme/README.pl.md similarity index 88% rename from README.pl.md rename to docs/readme/README.pl.md index f4e10f60..904078fb 100644 --- a/README.pl.md +++ b/docs/readme/README.pl.md @@ -1,6 +1,6 @@ -![Baner projektu Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Baner projektu Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | **Polski** | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | **Polski** | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> To tłumaczenie powstało z pomocą AI na podstawie [README.md](README.md) dla wersji 2.1.1. Wersją wzorcową jest angielskie README; poprawki są mile widziane — zajrzyj do [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> To tłumaczenie powstało z pomocą AI na podstawie [README.md](../../README.md) dla wersji 2.1.1. Wersją wzorcową jest angielskie README; poprawki są mile widziane — zajrzyj do [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Narzędzia dla Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -112,7 +112,7 @@ npm install @bootgs/utils Pełna dokumentacja jest opublikowana pod adresem **** (po angielsku): przewodniki, omówienia poszczególnych modułów i kompletna dokumentacja referencyjna funkcji. Jej źródła znajdują się -w [`docs/writerside/`](docs/writerside/) i są przebudowywane przy każdym pushu do `main`. +w [`docs/writerside/`](../writerside/) i są przebudowywane przy każdym pushu do `main`. Dobra kolejność lektury: @@ -228,7 +228,7 @@ npm run dev ## Funkcje według kategorii Pełna dokumentacja referencyjna funkcji została przeniesiona na stronę dokumentacji, która jest budowana -z [`docs/writerside/`](docs/writerside/) i publikowana przy każdym pushu do `main`: +z [`docs/writerside/`](../writerside/) i publikowana przy każdym pushu do `main`: **** @@ -249,7 +249,7 @@ omawia, które funkcje są powiązane z usługą Google, ile to kosztuje i co oz ## Jak pomóc w rozwoju -Wkład w projekt jest mile widziany. Pełny przewodnik znajdziesz w [CONTRIBUTING.md](CONTRIBUTING.md). W skrócie: +Wkład w projekt jest mile widziany. Pełny przewodnik znajdziesz w [CONTRIBUTING.md](../../CONTRIBUTING.md). W skrócie: 1. Zrób fork repozytorium i utwórz gałąź dla swojej funkcji lub poprawki. 2. Dodaj lub zaktualizuj testy obejmujące Twoje zmiany. @@ -258,14 +258,14 @@ Wkład w projekt jest mile widziany. Pełny przewodnik znajdziesz w [CONTRIBUTIN 5. Otwórz pull request z opisem tego, co się zmieniło i dlaczego. Trzymaj się istniejącego stylu kodu i konwencji nazewnictwa. Zasady społeczności opisuje -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Wsparcie - W przypadku błędów lub propozycji nowych funkcji wyszukaj albo otwórz [issue](https://github.com/bootgs/utils/issues) na GitHubie. -- Ostatnie zmiany znajdziesz w [historii zmian](CHANGELOG.md). -- Aby zgłosić lukę w zabezpieczeniach, postępuj zgodnie z [polityką bezpieczeństwa](SECURITY.md), zamiast otwierać +- Ostatnie zmiany znajdziesz w [historii zmian](../../CHANGELOG.md). +- Aby zgłosić lukę w zabezpieczeniach, postępuj zgodnie z [polityką bezpieczeństwa](../../SECURITY.md), zamiast otwierać publiczne issue. - Aby wesprzeć dalszy rozwój, zajrzyj na [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -277,15 +277,15 @@ rozjechać: aby coś zaproponować, otwórz [issue](https://github.com/bootgs/ut ## Historia zmian -Szczegółową listę zmian w poszczególnych wersjach znajdziesz w [CHANGELOG.md](CHANGELOG.md). +Szczegółową listę zmian w poszczególnych wersjach znajdziesz w [CHANGELOG.md](../../CHANGELOG.md). ## Licencja -Ten projekt jest udostępniany na licencji Apache License 2.0. Szczegóły znajdziesz w pliku [LICENSE](LICENSE). +Ten projekt jest udostępniany na licencji Apache License 2.0. Szczegóły znajdziesz w pliku [LICENSE](../../LICENSE). Grafika banera nie jest objęta tą licencją. Jest dziełem jej autorki, może być ponownie wykorzystywana bez zmian pod warunkiem podania autorki wraz z linkiem i podlega zasadom opisanym w -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Znaki towarowe diff --git a/README.pt.md b/docs/readme/README.pt.md similarity index 89% rename from README.pt.md rename to docs/readme/README.pt.md index 93522516..7f87915c 100644 --- a/README.pt.md +++ b/docs/readme/README.pt.md @@ -1,6 +1,6 @@ -![Banner do projeto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner do projeto Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Esta tradução foi feita com ajuda de IA a partir do [README.md](README.md) para a versão 2.1.1. A versão de referência é o README em inglês; correções são bem-vindas — veja [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Esta tradução foi feita com ajuda de IA a partir do [README.md](../../README.md) para a versão 2.1.1. A versão de referência é o README em inglês; correções são bem-vindas — veja [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Utilitários para Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -113,7 +113,7 @@ npm install @bootgs/utils A documentação completa está publicada em **** (em inglês): guias, explicações de cada módulo e a referência completa de funções. O código-fonte dela fica em -[`docs/writerside/`](docs/writerside/) e é reconstruído a cada push para `main`. +[`docs/writerside/`](../writerside/) e é reconstruído a cada push para `main`. Uma boa ordem de leitura: @@ -229,7 +229,7 @@ npm run dev ## Funções por categoria A referência completa de funções foi movida para o site de documentação, gerado a partir de -[`docs/writerside/`](docs/writerside/) e publicado a cada push para `main`: +[`docs/writerside/`](../writerside/) e publicado a cada push para `main`: **** @@ -250,7 +250,7 @@ mostra quais funções dependem de um serviço do Google, quanto isso custa e o ## Como contribuir -Contribuições são bem-vindas. Veja o guia completo em [CONTRIBUTING.md](CONTRIBUTING.md). Em resumo: +Contribuições são bem-vindas. Veja o guia completo em [CONTRIBUTING.md](../../CONTRIBUTING.md). Em resumo: 1. Faça um fork do repositório e crie um branch para o seu recurso ou correção. 2. Adicione ou atualize os testes que cobrem as suas alterações. @@ -259,14 +259,14 @@ Contribuições são bem-vindas. Veja o guia completo em [CONTRIBUTING.md](CONTR 5. Abra um pull request descrevendo o que mudou e por quê. Siga o estilo de código e as convenções de nomenclatura existentes. As regras da comunidade estão em -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Suporte - Para bugs ou pedidos de recursos, procure ou abra uma [issue](https://github.com/bootgs/utils/issues) no GitHub. -- Para as alterações recentes, veja o [registro de alterações](CHANGELOG.md). -- Para relatar uma vulnerabilidade de segurança, siga a [política de segurança](SECURITY.md) em vez de abrir uma +- Para as alterações recentes, veja o [registro de alterações](../../CHANGELOG.md). +- Para relatar uma vulnerabilidade de segurança, siga a [política de segurança](../../SECURITY.md) em vez de abrir uma issue pública. - Para apoiar o desenvolvimento contínuo, veja o [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). @@ -278,15 +278,15 @@ desatualizado em relação a ele: para propor algo, abra uma [issue](https://git ## Registro de alterações -Para a lista detalhada de alterações por versão, veja [CHANGELOG.md](CHANGELOG.md). +Para a lista detalhada de alterações por versão, veja [CHANGELOG.md](../../CHANGELOG.md). ## Licença -Este projeto é licenciado sob a Apache License 2.0. Veja [LICENSE](LICENSE) para mais detalhes. +Este projeto é licenciado sob a Apache License 2.0. Veja [LICENSE](../../LICENSE) para mais detalhes. A ilustração do banner não faz parte dessa licença. Ela é obra de sua autora, pode ser reutilizada sem modificações desde que a autora seja creditada com um link, e é regida por -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Marcas comerciais diff --git a/README.ru.md b/docs/readme/README.ru.md similarity index 90% rename from README.ru.md rename to docs/readme/README.ru.md index 330c84e8..6db45bba 100644 --- a/README.ru.md +++ b/docs/readme/README.ru.md @@ -1,6 +1,6 @@ -![Баннер проекта Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Баннер проекта Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Этот перевод выполнен с помощью ИИ по [README.md](README.md) для версии 2.1.1. Основной считается английская версия README; исправления приветствуются — см. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Этот перевод выполнен с помощью ИИ по [README.md](../../README.md) для версии 2.1.1. Основной считается английская версия README; исправления приветствуются — см. [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Утилиты для Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -113,7 +113,7 @@ npm install @bootgs/utils Полная документация опубликована по адресу **** — руководства, обзоры отдельных модулей и полный справочник функций. Её исходники лежат в -[`docs/writerside-ru/`](docs/writerside-ru/) и пересобираются после каждого push в `main`. +[`docs/writerside-ru/`](../writerside-ru/) и пересобираются после каждого push в `main`. Рекомендуемый порядок чтения: @@ -229,7 +229,7 @@ npm run dev ## Функции по категориям Полный справочник функций переехал на сайт документации, который собирается из -[`docs/writerside-ru/`](docs/writerside-ru/) и публикуется после каждого push в `main`: +[`docs/writerside-ru/`](../writerside-ru/) и публикуется после каждого push в `main`: **** @@ -251,7 +251,7 @@ npm run dev ## Участие в разработке -Вклад приветствуется. Полное руководство — в [CONTRIBUTING.md](CONTRIBUTING.md). Вкратце: +Вклад приветствуется. Полное руководство — в [CONTRIBUTING.md](../../CONTRIBUTING.md). Вкратце: 1. Сделайте форк репозитория и создайте ветку для своей функции или исправления. 2. Добавьте или обновите тесты, покрывающие ваши изменения. @@ -260,14 +260,14 @@ npm run dev 5. Откройте pull request с описанием того, что изменилось и почему. Придерживайтесь существующего стиля кода и соглашений об именах. Правила сообщества — в -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Поддержка - Чтобы сообщить об ошибке или предложить функцию, найдите или откройте [issue](https://github.com/bootgs/utils/issues) на GitHub. -- Последние изменения — в [журнале изменений](CHANGELOG.md). -- Чтобы сообщить об уязвимости, следуйте [политике безопасности](SECURITY.md), а не открывайте публичный issue. +- Последние изменения — в [журнале изменений](../../CHANGELOG.md). +- Чтобы сообщить об уязвимости, следуйте [политике безопасности](../../SECURITY.md), а не открывайте публичный issue. - Поддержать дальнейшую разработку можно через [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## Дорожная карта @@ -278,14 +278,14 @@ npm run dev ## Журнал изменений -Подробный список изменений по версиям — в [CHANGELOG.md](CHANGELOG.md). +Подробный список изменений по версиям — в [CHANGELOG.md](../../CHANGELOG.md). ## Лицензия -Проект распространяется по лицензии Apache License 2.0. Подробности — в [LICENSE](LICENSE). +Проект распространяется по лицензии Apache License 2.0. Подробности — в [LICENSE](../../LICENSE). Иллюстрация баннера не подпадает под эту лицензию. Это работа её автора; её можно использовать без изменений, -указав автора со ссылкой, а условия описаны в [docs/assets/images/README.md](docs/assets/images/README.md). +указав автора со ссылкой, а условия описаны в [docs/assets/images/README.md](../assets/images/README.md). ## Товарные знаки diff --git a/README.tr.md b/docs/readme/README.tr.md similarity index 88% rename from README.tr.md rename to docs/readme/README.tr.md index 2c51ae19..449bb8ca 100644 --- a/README.tr.md +++ b/docs/readme/README.tr.md @@ -1,6 +1,6 @@ -![Google Apps Script Utils proje banner'ı](docs/assets/images/banner-1280x640.jpg) +![Google Apps Script Utils proje banner'ı](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | **Türkçe** | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | **Türkçe** | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Bu çeviri, 2.1.1 sürümü için [README.md](README.md) dosyasından yapay zekâ desteğiyle yapılmıştır. Referans sürüm İngilizce README'dir; düzeltmelerinizi bekliyoruz — bkz. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Bu çeviri, 2.1.1 sürümü için [README.md](../../README.md) dosyasından yapay zekâ desteğiyle yapılmıştır. Referans sürüm İngilizce README'dir; düzeltmelerinizi bekliyoruz — bkz. [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Google Apps Script™ için yardımcı araçlar @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -110,7 +110,7 @@ npm install @bootgs/utils ## Dokümantasyon Dokümantasyonun tamamı **** adresinde (İngilizce) yayımlanır: kılavuzlar, her modül -için adım adım anlatımlar ve eksiksiz fonksiyon başvurusu. Kaynağı [`docs/writerside/`](docs/writerside/) dizinindedir +için adım adım anlatımlar ve eksiksiz fonksiyon başvurusu. Kaynağı [`docs/writerside/`](../writerside/) dizinindedir ve `main` dalına yapılan her push'ta yeniden derlenir. Önerilen okuma sırası: @@ -226,7 +226,7 @@ npm run dev ## Kategorilere göre fonksiyonlar -Fonksiyon başvurusunun tamamı, [`docs/writerside/`](docs/writerside/) dizininden derlenen ve `main` dalına yapılan her +Fonksiyon başvurusunun tamamı, [`docs/writerside/`](../writerside/) dizininden derlenen ve `main` dalına yapılan her push'ta yayımlanan dokümantasyon sitesine taşındı (İngilizce): **** @@ -249,7 +249,7 @@ ele alır. ## Katkıda bulunma -Katkılarınızı memnuniyetle karşılıyoruz. Kılavuzun tamamı için [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın. +Katkılarınızı memnuniyetle karşılıyoruz. Kılavuzun tamamı için [CONTRIBUTING.md](../../CONTRIBUTING.md) dosyasına bakın. Özetle: 1. Depoyu fork'layın ve özelliğiniz ya da hata düzeltmeniz için bir dal oluşturun. @@ -258,15 +258,15 @@ Katkılarınızı memnuniyetle karşılıyoruz. Kılavuzun tamamı için [CONTRI 4. `CHANGELOG.md` dosyasını elle düzenlemeyin — [release-please](https://github.com/googleapis/release-please) tarafından otomatik olarak oluşturulur. 5. Neyin neden değiştiğini açıklayan bir pull request açın. -Mevcut kod stiline ve adlandırma kurallarına uyun. Topluluk kuralları için [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) +Mevcut kod stiline ve adlandırma kurallarına uyun. Topluluk kuralları için [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) dosyasına bakın. ## Destek - Hatalar veya özellik istekleri için GitHub'da bir [issue](https://github.com/bootgs/utils/issues) arayın ya da açın. -- Son değişiklikler için [değişiklik günlüğüne](CHANGELOG.md) bakın. -- Bir güvenlik açığı bildirmek için herkese açık bir issue açmak yerine [güvenlik politikasını](SECURITY.md) izleyin. +- Son değişiklikler için [değişiklik günlüğüne](../../CHANGELOG.md) bakın. +- Bir güvenlik açığı bildirmek için herkese açık bir issue açmak yerine [güvenlik politikasını](../../SECURITY.md) izleyin. - Süregelen geliştirmeyi desteklemek için [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) sayfasına bakın. @@ -279,14 +279,14 @@ açın. ## Değişiklik günlüğü -Sürümlere göre değişikliklerin ayrıntılı listesi için [CHANGELOG.md](CHANGELOG.md) dosyasına bakın. +Sürümlere göre değişikliklerin ayrıntılı listesi için [CHANGELOG.md](../../CHANGELOG.md) dosyasına bakın. ## Lisans -Bu proje Apache License 2.0 ile lisanslanmıştır. Ayrıntılar için [LICENSE](LICENSE) dosyasına bakın. +Bu proje Apache License 2.0 ile lisanslanmıştır. Ayrıntılar için [LICENSE](../../LICENSE) dosyasına bakın. Banner görseli bu lisansın kapsamında değildir. Sanatçısına aittir; sanatçının adı belirtilip bu atıf bağlantıyla -verildiği sürece değiştirilmeden yeniden kullanılabilir ve [docs/assets/images/README.md](docs/assets/images/README.md) +verildiği sürece değiştirilmeden yeniden kullanılabilir ve [docs/assets/images/README.md](../assets/images/README.md) kapsamındadır. ## Ticari markalar diff --git a/README.uk.md b/docs/readme/README.uk.md similarity index 90% rename from README.uk.md rename to docs/readme/README.uk.md index d1c66363..700665d5 100644 --- a/README.uk.md +++ b/docs/readme/README.uk.md @@ -1,6 +1,6 @@ -![Банер проєкту Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Банер проєкту Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Цей переклад зроблено за допомогою ШІ з [README.md](README.md) для версії 2.1.1. Основною є англійська версія README; виправлення вітаються — див. [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Цей переклад зроблено за допомогою ШІ з [README.md](../../README.md) для версії 2.1.1. Основною є англійська версія README; виправлення вітаються — див. [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Утиліти для Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -111,7 +111,7 @@ npm install @bootgs/utils ## Документація Повна документація опублікована за адресою **** — посібники, -огляди окремих модулів і повний довідник функцій. Її джерело лежить у [`docs/writerside-uk/`](docs/writerside-uk/) і +огляди окремих модулів і повний довідник функцій. Її джерело лежить у [`docs/writerside-uk/`](../writerside-uk/) і перезбирається після кожного push у `main`. Рекомендований порядок читання: @@ -228,7 +228,7 @@ npm run dev ## Функції за категоріями Повний довідник функцій переїхав на сайт документації, який збирається з -[`docs/writerside-uk/`](docs/writerside-uk/) і публікується після кожного push у `main`: +[`docs/writerside-uk/`](../writerside-uk/) і публікується після кожного push у `main`: **** @@ -249,7 +249,7 @@ npm run dev ## Участь у розробці -Внески вітаються. Повний посібник — у [CONTRIBUTING.md](CONTRIBUTING.md). Коротко: +Внески вітаються. Повний посібник — у [CONTRIBUTING.md](../../CONTRIBUTING.md). Коротко: 1. Зробіть форк репозиторію та створіть гілку для своєї функції чи виправлення. 2. Додайте або оновіть тести, що покривають ваші зміни. @@ -258,14 +258,14 @@ npm run dev 5. Відкрийте pull request з описом того, що змінилося і чому. Дотримуйтеся наявного стилю коду та домовленостей щодо імен. Правила спільноти — у -[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). +[CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md). ## Підтримка - Щоб повідомити про помилку чи запропонувати функцію, знайдіть або відкрийте [issue](https://github.com/bootgs/utils/issues) на GitHub. -- Останні зміни — у [журналі змін](CHANGELOG.md). -- Щоб повідомити про вразливість, дотримуйтеся [політики безпеки](SECURITY.md), а не відкривайте публічний issue. +- Останні зміни — у [журналі змін](../../CHANGELOG.md). +- Щоб повідомити про вразливість, дотримуйтеся [політики безпеки](../../SECURITY.md), а не відкривайте публічний issue. - Підтримати подальшу розробку можна через [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## Дорожня карта @@ -276,14 +276,14 @@ npm run dev ## Журнал змін -Докладний перелік змін за версіями — у [CHANGELOG.md](CHANGELOG.md). +Докладний перелік змін за версіями — у [CHANGELOG.md](../../CHANGELOG.md). ## Ліцензія -Проєкт поширюється за ліцензією Apache License 2.0. Подробиці — у [LICENSE](LICENSE). +Проєкт поширюється за ліцензією Apache License 2.0. Подробиці — у [LICENSE](../../LICENSE). Ілюстрація банера не підпадає під цю ліцензію. Це робота її авторки; її можна використовувати без змін, зазначивши -авторку з посиланням, а умови описано в [docs/assets/images/README.md](docs/assets/images/README.md). +авторку з посиланням, а умови описано в [docs/assets/images/README.md](../assets/images/README.md). ## Торговельні марки diff --git a/README.vi.md b/docs/readme/README.vi.md similarity index 89% rename from README.vi.md rename to docs/readme/README.vi.md index 7e3ace15..5d768a15 100644 --- a/README.vi.md +++ b/docs/readme/README.vi.md @@ -1,6 +1,6 @@ -![Banner del proyecto Google Apps Script Utils](docs/assets/images/banner-1280x640.jpg) +![Banner del proyecto Google Apps Script Utils](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | **Tiếng Việt** | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | **Tiếng Việt** | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) -> Bản dịch này được thực hiện với sự hỗ trợ của AI từ [README.md](README.md) cho phiên bản 2.1.1. Phiên bản tham chiếu là README tiếng Anh; mọi góp ý chỉnh sửa đều được hoan nghênh — xem [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations). +> Bản dịch này được thực hiện với sự hỗ trợ của AI từ [README.md](../../README.md) cho phiên bản 2.1.1. Phiên bản tham chiếu là README tiếng Anh; mọi góp ý chỉnh sửa đều được hoan nghênh — xem [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations). # Tiện ích cho Google Apps Script™ @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -112,7 +112,7 @@ npm install @bootgs/utils Tài liệu đầy đủ được xuất bản tại **** (bằng tiếng Anh): các hướng dẫn, phần giới thiệu từng module và tài liệu tham chiếu đầy đủ của các hàm. Mã nguồn của tài liệu nằm trong -[`docs/writerside/`](docs/writerside/) và được build lại mỗi lần push lên `main`. +[`docs/writerside/`](../writerside/) và được build lại mỗi lần push lên `main`. Thứ tự đọc được đề xuất: @@ -228,7 +228,7 @@ npm run dev ## Hàm theo danh mục Tài liệu tham chiếu đầy đủ của các hàm đã được chuyển sang trang tài liệu, được build từ -[`docs/writerside/`](docs/writerside/) và xuất bản mỗi lần push lên `main`: +[`docs/writerside/`](../writerside/) và xuất bản mỗi lần push lên `main`: **** @@ -250,7 +250,7 @@ thử. ## Đóng góp -Chúng tôi hoan nghênh mọi đóng góp. Xem hướng dẫn đầy đủ tại [CONTRIBUTING.md](CONTRIBUTING.md). Tóm tắt: +Chúng tôi hoan nghênh mọi đóng góp. Xem hướng dẫn đầy đủ tại [CONTRIBUTING.md](../../CONTRIBUTING.md). Tóm tắt: 1. Fork kho mã và tạo một nhánh cho tính năng hoặc bản sửa lỗi của bạn. 2. Thêm hoặc cập nhật kiểm thử để bao phủ các thay đổi của bạn. @@ -258,15 +258,15 @@ Chúng tôi hoan nghênh mọi đóng góp. Xem hướng dẫn đầy đủ tạ 4. Không chỉnh sửa `CHANGELOG.md` thủ công — tệp này được tạo tự động bởi [release-please](https://github.com/googleapis/release-please). 5. Mở một pull request mô tả những gì đã thay đổi và lý do. -Hãy tuân theo phong cách mã và quy ước đặt tên hiện có. Xem [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) để biết các quy +Hãy tuân theo phong cách mã và quy ước đặt tên hiện có. Xem [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) để biết các quy tắc của cộng đồng. ## Hỗ trợ - Đối với lỗi hoặc yêu cầu tính năng, hãy tìm kiếm hoặc mở một [issue](https://github.com/bootgs/utils/issues) trên GitHub. -- Để xem các thay đổi gần đây, hãy xem [nhật ký thay đổi](CHANGELOG.md). -- Để báo cáo lỗ hổng bảo mật, hãy làm theo [chính sách bảo mật](SECURITY.md) thay vì mở một issue công khai. +- Để xem các thay đổi gần đây, hãy xem [nhật ký thay đổi](../../CHANGELOG.md). +- Để báo cáo lỗ hổng bảo mật, hãy làm theo [chính sách bảo mật](../../SECURITY.md) thay vì mở một issue công khai. - Để ủng hộ việc phát triển liên tục, hãy xem [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov). ## Lộ trình @@ -277,15 +277,15 @@ Những việc đã lên kế hoạch, đang thực hiện hoặc đã hoàn th ## Nhật ký thay đổi -Để xem danh sách chi tiết các thay đổi theo từng phiên bản, hãy xem [CHANGELOG.md](CHANGELOG.md). +Để xem danh sách chi tiết các thay đổi theo từng phiên bản, hãy xem [CHANGELOG.md](../../CHANGELOG.md). ## Giấy phép -Dự án này được cấp phép theo Apache License 2.0. Xem [LICENSE](LICENSE) để biết chi tiết. +Dự án này được cấp phép theo Apache License 2.0. Xem [LICENSE](../../LICENSE) để biết chi tiết. Hình minh họa banner không thuộc phạm vi giấy phép đó. Đây là tác phẩm của tác giả, có thể được tái sử dụng mà không chỉnh sửa với điều kiện ghi công tác giả kèm liên kết, và được điều chỉnh bởi -[docs/assets/images/README.md](docs/assets/images/README.md). +[docs/assets/images/README.md](../assets/images/README.md). ## Nhãn hiệu diff --git a/README.zh-TW.md b/docs/readme/README.zh-TW.md similarity index 86% rename from README.zh-TW.md rename to docs/readme/README.zh-TW.md index 697c0e59..5df0fd71 100644 --- a/README.zh-TW.md +++ b/docs/readme/README.zh-TW.md @@ -1,6 +1,6 @@ -![Google Apps Script Utils 專案橫幅](docs/assets/images/banner-1280x640.jpg) +![Google Apps Script Utils 專案橫幅](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | **繁體中文** +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | **繁體中文** -> 本翻譯以 AI 輔助,依據版本 2.1.1 的 [README.md](README.md) 製作。參考版本為英文版 README;歡迎提出修正,請參閱 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)。 +> 本翻譯以 AI 輔助,依據版本 2.1.1 的 [README.md](../../README.md) 製作。參考版本為英文版 README;歡迎提出修正,請參閱 [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations)。 # Google Apps Script™ 工具函式庫 @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -99,7 +99,7 @@ npm install @bootgs/utils ## 文件 -完整文件發布於 ****(英文),包含指南、各模組的逐步說明,以及完整的函式參考。其原始檔位於 [`docs/writerside/`](docs/writerside/),每次推送到 `main` 時都會重新建置。 +完整文件發布於 ****(英文),包含指南、各模組的逐步說明,以及完整的函式參考。其原始檔位於 [`docs/writerside/`](../writerside/),每次推送到 `main` 時都會重新建置。 建議的閱讀順序: @@ -211,7 +211,7 @@ npm run dev ## 依類別分類的函式 -完整的函式參考已移至文件網站(英文)。該網站由 [`docs/writerside/`](docs/writerside/) 建置,每次推送到 `main` 時發布: +完整的函式參考已移至文件網站(英文)。該網站由 [`docs/writerside/`](../writerside/) 建置,每次推送到 `main` 時發布: **** @@ -227,7 +227,7 @@ npm run dev ## 參與貢獻 -歡迎參與貢獻。完整指南請參閱 [CONTRIBUTING.md](CONTRIBUTING.md)。簡要步驟如下: +歡迎參與貢獻。完整指南請參閱 [CONTRIBUTING.md](../../CONTRIBUTING.md)。簡要步驟如下: 1. Fork 本儲存庫,並為你的新功能或錯誤修正建立分支。 2. 新增或更新測試,以涵蓋你的變更。 @@ -235,13 +235,13 @@ npm run dev 4. 請勿手動編輯 `CHANGELOG.md`,它由 [release-please](https://github.com/googleapis/release-please) 自動產生。 5. 開啟 pull request,說明變更了什麼以及原因。 -請遵循既有的程式碼風格與命名慣例。社群準則請參閱 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 +請遵循既有的程式碼風格與命名慣例。社群準則請參閱 [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md)。 ## 支援 - 如需回報錯誤或提出功能需求,請在 GitHub 上搜尋或開啟 [issue](https://github.com/bootgs/utils/issues)。 -- 近期的變更請參閱[變更紀錄](CHANGELOG.md)。 -- 如需回報安全漏洞,請依照[安全政策](SECURITY.md)辦理,不要開啟公開的 issue。 +- 近期的變更請參閱[變更紀錄](../../CHANGELOG.md)。 +- 如需回報安全漏洞,請依照[安全政策](../../SECURITY.md)辦理,不要開啟公開的 issue。 - 如想支持專案的持續開發,請前往 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)。 ## 路線圖 @@ -250,13 +250,13 @@ npm run dev ## 變更紀錄 -依版本列出的詳細變更清單,請參閱 [CHANGELOG.md](CHANGELOG.md)。 +依版本列出的詳細變更清單,請參閱 [CHANGELOG.md](../../CHANGELOG.md)。 ## 授權條款 -本專案採用 Apache License 2.0 授權。詳情請參閱 [LICENSE](LICENSE)。 +本專案採用 Apache License 2.0 授權。詳情請參閱 [LICENSE](../../LICENSE)。 -橫幅插圖不在該授權範圍內。它是作者的作品,在標註作者並附上連結的前提下,可不經修改地重複使用,相關規範請見 [docs/assets/images/README.md](docs/assets/images/README.md)。 +橫幅插圖不在該授權範圍內。它是作者的作品,在標註作者並附上連結的前提下,可不經修改地重複使用,相關規範請見 [docs/assets/images/README.md](../assets/images/README.md)。 ## 商標 diff --git a/README.zh.md b/docs/readme/README.zh.md similarity index 86% rename from README.zh.md rename to docs/readme/README.zh.md index a638fb19..af607566 100644 --- a/README.zh.md +++ b/docs/readme/README.zh.md @@ -1,6 +1,6 @@ -![Google Apps Script Utils 项目横幅](docs/assets/images/banner-1280x640.jpg) +![Google Apps Script Utils 项目横幅](../assets/images/banner-1280x640.jpg)

@@ -8,9 +8,9 @@

-[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | **简体中文** | [繁體中文](README.zh-TW.md) +[English](../../README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | **简体中文** | [繁體中文](README.zh-TW.md) -> 本译文借助 AI 根据 2.1.1 版本的 [README.md](README.md) 翻译而成。以英文版 README 为准;欢迎指正——请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#readme-translations)。 +> 本译文借助 AI 根据 2.1.1 版本的 [README.md](../../README.md) 翻译而成。以英文版 README 为准;欢迎指正——请参阅 [CONTRIBUTING.md](../../CONTRIBUTING.md#readme-translations)。 # Google Apps Script™ 实用工具库 @@ -18,8 +18,8 @@ npm version npm downloads Built with clasp - License - Security Policy + License + Security Policy Roadmap Latest release

@@ -99,7 +99,7 @@ npm install @bootgs/utils ## 文档 -完整文档发布在 ****(英文),包括指南、各模块讲解和完整的函数参考。其源文件位于 [`docs/writerside/`](docs/writerside/),每次推送到 `main` 时都会重新构建。 +完整文档发布在 ****(英文),包括指南、各模块讲解和完整的函数参考。其源文件位于 [`docs/writerside/`](../writerside/),每次推送到 `main` 时都会重新构建。 推荐的阅读顺序: @@ -211,7 +211,7 @@ npm run dev ## 按类别划分的函数 -完整的函数参考已迁移到文档站点。该站点由 [`docs/writerside/`](docs/writerside/) 构建,每次推送到 `main` 时发布: +完整的函数参考已迁移到文档站点。该站点由 [`docs/writerside/`](../writerside/) 构建,每次推送到 `main` 时发布: **** @@ -227,7 +227,7 @@ npm run dev ## 参与贡献 -欢迎贡献。完整指南请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。简要步骤如下: +欢迎贡献。完整指南请参阅 [CONTRIBUTING.md](../../CONTRIBUTING.md)。简要步骤如下: 1. Fork 本仓库,并为你的功能或缺陷修复创建分支。 2. 添加或更新覆盖你的改动的测试。 @@ -235,13 +235,13 @@ npm run dev 4. 不要手动编辑 `CHANGELOG.md`——它由 [release-please](https://github.com/googleapis/release-please) 自动生成。 5. 创建 pull request,说明改了什么以及为什么。 -请遵循现有的代码风格和命名约定。社区准则见 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 +请遵循现有的代码风格和命名约定。社区准则见 [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md)。 ## 支持 - 如需报告缺陷或提出功能需求,请在 GitHub 上搜索或新建 [issue](https://github.com/bootgs/utils/issues)。 -- 最近的变更请查看[更新日志](CHANGELOG.md)。 -- 如需报告安全漏洞,请遵循[安全策略](SECURITY.md),不要创建公开 issue。 +- 最近的变更请查看[更新日志](../../CHANGELOG.md)。 +- 如需报告安全漏洞,请遵循[安全策略](../../SECURITY.md),不要创建公开 issue。 - 如需支持项目的持续开发,请访问 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)。 ## 路线图 @@ -250,13 +250,13 @@ npm run dev ## 更新日志 -按版本列出的详细变更请参阅 [CHANGELOG.md](CHANGELOG.md)。 +按版本列出的详细变更请参阅 [CHANGELOG.md](../../CHANGELOG.md)。 ## 许可证 -本项目采用 Apache License 2.0 许可证。详情请参阅 [LICENSE](LICENSE)。 +本项目采用 Apache License 2.0 许可证。详情请参阅 [LICENSE](../../LICENSE)。 -横幅插画不属于该许可证的范围。它是其作者的作品,在署名作者并附上链接的前提下可不加修改地重复使用,具体条款见 [docs/assets/images/README.md](docs/assets/images/README.md)。 +横幅插画不属于该许可证的范围。它是其作者的作品,在署名作者并附上链接的前提下可不加修改地重复使用,具体条款见 [docs/assets/images/README.md](../assets/images/README.md)。 ## 商标 diff --git a/scripts/check-readme-translations.mjs b/scripts/check-readme-translations.mjs index 5094ed9b..86d02595 100644 --- a/scripts/check-readme-translations.mjs +++ b/scripts/check-readme-translations.mjs @@ -3,10 +3,12 @@ * * For every language below it fails when: * - * - `README..md` is missing; + * - `docs/readme/README..md` is missing; * - the language switcher is missing from it (or from README.md), or differs * from the expected line, which shows the current language in bold and links * the others; + * - a relative link in it (or in README.md) points to a file that does not + * exist, such as a repository-root path not rewritten for `docs/readme/`; * - its number of `##` and `###` headings differs from README.md; * - the version in its translation note, the blockquote right after the * switcher, differs from the `version` in package.json. @@ -18,6 +20,10 @@ * It does not compare wording: a translation can be out of date and still * pass. The version note is what says which README.md it was made from. * + * README.md stays in the repository root and links the translations as + * `docs/readme/README..md`. Inside `docs/readme/` a translation links the + * others as `README..md` and English as `../../README.md`. + * * Usage: `npm run docs:check-i18n` */ @@ -52,14 +58,30 @@ const LANGUAGES = [ { code: "zh-TW", name: "繁體中文" } ]; -const fileOf = (code) => (code === "en" ? "README.md" : `README.${code}.md`); +/** + * The folder of the translations, relative to the repository root. + */ +const TRANSLATIONS_DIR = "docs/readme"; + +const fileOf = (code) => (code === "en" ? "README.md" : `${TRANSLATIONS_DIR}/README.${code}.md`); + +/** + * The link to the README of `code` as written in the README of `from`. + */ +function linkTo(code, from) { + if (from === "en") { + return fileOf(code); + } + + return code === "en" ? "../../README.md" : `README.${code}.md`; +} /** * The switcher line as it has to appear in the README of `current`. */ function switcherFor(current) { return LANGUAGES.map(({ code, name }) => { - const file = fileOf(code); + const file = linkTo(code, current); return code === current ? `**${name}**` : `[${name}](${file})`; }).join(" | "); @@ -95,6 +117,38 @@ function isRtlWrapper(line) { return /^]*\bdir="rtl"[^>]*>$/.test(line.trim()) || line.trim() === "
"; } +/** + * The relative link targets in `lines` that do not exist, resolved from `dir`. + * + * Markdown links and `href`/`src`/`srcset` attributes are checked; absolute + * URLs, `mailto:` links and same-file `#anchors` are skipped. + */ +function missingLinks(lines, dir) { + const missing = []; + + for (const line of lines) { + const targets = [ + ...[...line.matchAll(/\]\(([^)\s]+)/g)].map((match) => match[1]), + ...[...line.matchAll(/\b(?:href|src)="([^"]+)"/g)].map((match) => match[1]), + ...[...line.matchAll(/\bsrcset="([^"]+)"/g)].flatMap((match) => + match[1].split(",").map((entry) => entry.trim().split(/\s+/)[0]) + ) + ]; + + for (const target of targets) { + if (/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(target)) { + continue; + } + + if (!existsSync(resolve(dir, decodeURIComponent(target.split("#")[0])))) { + missing.push(target); + } + } + } + + return missing; +} + function headingCount(lines) { return lines.filter((line) => /^#{2,3} \S/.test(line)).length; } @@ -111,6 +165,10 @@ if (!sourceLines.includes(switcherFor("en"))) { problems.push("README.md: the language switcher is missing or differs from the expected line"); } +for (const target of missingLinks(sourceLines, ROOT)) { + problems.push(`README.md: the link target ${target} does not exist`); +} + for (const { code } of LANGUAGES.slice(1)) { const file = fileOf(code); @@ -124,6 +182,10 @@ for (const { code } of LANGUAGES.slice(1)) { const lines = proseLines(readFileSync(path, "utf8")); + for (const target of missingLinks(lines, dirname(path))) { + problems.push(`${file}: the link target ${target} does not exist`); + } + const switcherAt = lines.indexOf(switcherFor(code)); if (switcherAt === -1) {