返回 Skill 列表
extension
分类: 开发与工程无需 API Key

google-apps-script

全面的Google Apps Script开发指南,涵盖所有内置服务(如SpreadsheetApp、DocumentApp、GmailApp、DriveApp、CalendarApp、FormApp、SlidesApp)、触发器、授权、错误处理及性能优化。适用于自动化Google Sheets操作、创建Google Docs文档、管理Gmail/电子邮件、处理Google Drive文件、自动化日历事件、实现基于时间或事件的触发器、构建自定义函数、创建插件、处理OAuth范围、优化Apps Script性能、使用UrlFetchApp进行API调用、利用PropertiesService实现持久化存储或通过CacheService管理临时数据。还包括批量操作、错误恢复以及JavaScript ES6+运行时环境等内容。

person作者: jakexiaohubgithub

Google Apps Script

Overview

Cloud-based JavaScript platform for automating Google Workspace services. Server-side V8 runtime with automatic OAuth integration across Sheets, Docs, Gmail, Drive, Calendar, and more.

Core Services

  1. SpreadsheetApp - Google Sheets automation (read, write, format, data validation)
  2. DocumentApp - Google Docs creation and editing
  3. GmailApp & MailApp - Email operations (send, search, manage labels)
  4. DriveApp - File and folder management, sharing, permissions
  5. CalendarApp - Calendar events, recurring appointments, reminders
  6. Triggers & ScriptApp - Time-based and event-driven automation

Quick Start

function generateWeeklyReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Data');
  const data = sheet.getRange('A2:D').getValues();

  const report = data.filter(row => row[0]);
  const summarySheet = ss.getSheetByName('Summary') || ss.insertSheet('Summary');
  summarySheet.clear();
  summarySheet.appendRow(['Name', 'Value', 'Status']);
  report.forEach(row => summarySheet.appendRow([row[0], row[1], row[2]]));

  MailApp.sendEmail({
    to: Session.getEffectiveUser().getEmail(),
    subject: 'Weekly Report Generated',
    body: `Report generated with ${report.length} records.`
  });
}

Best Practices

  • Batch operations - read/write ranges in bulk, never cell-by-cell in loops
  • Cache data - use CacheService (25 min TTL) for frequently accessed data
  • Error handling - wrap operations in try/catch, log errors to a sheet for audit trails
  • Respect limits - 6-minute execution timeout; split large jobs across triggers
  • Minimise scopes - request only necessary OAuth permissions in appsscript.json
  • Persistent storage - use PropertiesService for configuration and state
  • Validate inputs - always check objects exist before accessing properties

See references/best-practices.md for detailed examples of each practice.

Validation & Testing

Use the validation scripts in scripts/ for pre-deployment checks:

  • scripts/validators.py - Validate spreadsheet operations, range notations, and data structures

Debug with Logger.log() and view output via View > Logs (Cmd/Ctrl + Enter). Use breakpoints in the Apps Script editor for step-through debugging.

Integration with Other Skills

  • google-ads-scripts - Export Google Ads data to Sheets for reporting
  • google-tagmanager - Coordinate with GTM for tracking events triggered by Apps Script
  • google-analytics - Query GA4 BigQuery exports from Apps Script and write results to Sheets

Troubleshooting

| Issue | Solution | |-------|----------| | Execution timeout | Split work into smaller batches or use multiple triggers | | Authorisation error | Check OAuth scopes in manifest file | | Quota exceeded | Reduce API call frequency, use caching | | Null reference error | Validate objects exist before accessing properties |

References

Detailed content is available in reference files (loaded on demand):