📚

Google Apps Scriptの基礎と使用方法

2024/07/18に公開

基礎知識

Google Apps Scriptの概要

  • Google Apps Scriptは、Google Workspace(旧G Suite)の各種サービス(Googleドキュメント、スプレッドシート、カレンダー、Gmailなど)を操作するためのスクリプトです。
  • JavaScriptに基づいており、初心者にも親しみやすい言語です。

スクリプトエディタのアクセス方法

  1. Googleドライブにアクセスし、任意のGoogleドキュメント、スプレッドシート、または新しいプロジェクトを開きます。
  2. 上部メニューの「拡張機能」 > 「Apps Script」を選択します。

スクリプトエディタの基本構造

  • スクリプトエディタには、コードを記述するためのエディタ、ログ、実行履歴、トリガーなどのタブがあります。
  • プロジェクトには複数のスクリプトファイル(.gsファイル)とHTMLファイル(Webアプリケーション用)を含めることができます。

Google Apps Scriptリファレンス

  • 詳細なリファレンスはGoogle Apps Scriptの公式ドキュメントを参照してください。このドキュメントには、各種サービスの操作方法やAPIの詳細な説明が記載されています。

基本的なスクリプトの例

1. Hello World

最も基本的なスクリプトで、ログに「Hello, World!」と表示します。

function helloWorld() {
  Logger.log('Hello, World!');
}

2. Googleスプレッドシートの操作

スプレッドシートのデータを読み取る

function readSpreadsheet() {
  var sheet = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID').getActiveSheet(); 
  var data = sheet.getRange('A1:B2').getValues();
  Logger.log(data);
}

スプレッドシートにデータを書き込む

function writeSpreadsheet() {
  var sheet = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID').getActiveSheet();
  sheet.getRange('A1').setValue('Hello, World!');
}

3. Googleドキュメントの操作

ドキュメントにテキストを追加する

function addTextToDocument() {
  var doc = DocumentApp.openById('YOUR_DOCUMENT_ID');
  var body = doc.getBody();
  body.appendParagraph('Hello, World!');
}

4. Gmailの操作

メールを送信する

function sendEmail() {
  var recipient = 'example@example.com';
  var subject = 'Test Email';
  var body = 'Hello, this is a test email!';
  MailApp.sendEmail(recipient, subject, body);
}

5. トリガーの設定

時間ベースのトリガーを設定する例

function createTimeDrivenTrigger() {
  ScriptApp.newTrigger('myScheduledFunction')
           .timeBased()
           .everyDays(1)  
           .atHour(9)
           .create();
}

function myScheduledFunction() {
  Logger.log('This function runs every day at 9 AM');
}

6. エラーハンドリング

function createTimeDrivenTrigger() {
  ScriptApp.newTrigger('myScheduledFunction')
           .timeBased()
           .everyDays(1)
           .atHour(9)
           .create();
}

function myScheduledFunction() {
  Logger.log('This function runs every day at 9 AM');
}

7. デバッグとログ

function debugExample() {
  var value = 42;
  Logger.log('The value is: ' + value);
}

8. プロパティサービスの使用例

ユーザープロパティの設定と取得

function setUserProperty() {
  var userProperties = PropertiesService.getUserProperties();
  userProperties.setProperty('favoriteColor', 'blue');
}

function getUserProperty() {
  var userProperties = PropertiesService.getUserProperties();
  var favoriteColor = userProperties.getProperty('favoriteColor');
  Logger.log('Favorite color: ' + favoriteColor);
}

9. カスタム関数の定義と使用例

スプレッドシートで使用するカスタム関数

function DOUBLE(value) {
  return value * 2;
}

10. メニューのカスタマイズ

カスタムメニューの追加

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('カスタムメニュー')
    .addItem('スクリプトを実行', 'myFunction')
    .addToUi();
}

function myFunction() {
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('A1').setValue('Hello, World!');
}

11. フォーム操作

フォームの作成

function createForm() {
  var form = FormApp.create('New Form');
  form.setTitle('Sample Form')
      .setDescription('This is a sample form created by Google Apps Script.')
      .setConfirmationMessage('Thank you for your response.');

  var item = form.addMultipleChoiceItem();
  item.setTitle('Do you like Google Apps Script?')
      .setChoices([
        item.createChoice('Yes'),
        item.createChoice('No')
      ]);

  Logger.log('Form URL: ' + form.getPublishedUrl());
}

12. Webアプリケーション

簡単なWebアプリケーション

function doGet() {
  return HtmlService.createHtmlOutput('Hello, world!');
}

13. 外部APIとの連携

外部APIからデータを取得

function fetchExternalData() {
  var response = UrlFetchApp.fetch('https://api.example.com/data');
  var data = JSON.parse(response.getContentText());
  Logger.log(data);
}

14. トリガーの管理

トリガーの一覧を取得

function listTriggers() {
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    var trigger = triggers[i];
    var handlerFunction = trigger.getHandlerFunction();
    Logger.log('Trigger ' + (i + 1) + ': ' + handlerFunction);
  }

  if (triggers.length === 0) {
    Logger.log('No triggers found.');
  }
}

15. ファイル操作

ファイルの作成と削除

function createAndDeleteFile() {
  var folder = DriveApp.getRootFolder();
  var file = folder.createFile('Sample File', 'This is a sample file.');
  Logger.log('File ID: ' + file.getId());

  file.setTrashed(true);
}

まとめ

Google Apps Scriptを使用してGoogle Workspaceアプリケーションを自動化するための重要な概念と機能を説明しました。これらのサンプルコードを参考にしながら、実際にスクリプトを作成して試してみてください。まずは簡単なスクリプトから始め、徐々に複雑なスクリプトに挑戦することで、Google Apps Scriptの幅広い機能を効果的に活用できるようになります。

Discussion