Google Apps ScriptでLINE Notifyにメッセージを送信する方法

## はじめに

LINE Notifyを使って自動的にメッセージを送信する方法を紹介します。Google Apps Script（GAS）を活用して、LINE Notifyに通知を送るための基本的なコードの解説と、APIトークンの管理方法について説明します。

この記事では、以下の内容について学べます。

- LINE NotifyのAPIトークンをGoogle Apps Scriptのプロパティに設定する方法
- GASを使用してLINE Notifyにメッセージを送信する方法
- エラーハンドリングとAPIレスポンスの処理

## 必要な準備

事前に、以下の準備を行ってください。

- **LINE NotifyのAPIトークン**を取得し、Google Apps Scriptのスクリプトプロパティに保存
- Google Apps Scriptの編集環境

## コードの説明

次に、LINE Notifyにメッセージを送信する関数 `sendMessageToLineNotify` の詳細を見ていきます。

### コード全体

```javascript
/**
 * LINE Notifyにメッセージを送信する関数。
 * 
 * @param {string} text - 送信するメッセージのテキスト。
 */
function sendMessageToLineNotify(text) {
  let url = 'https://notify-api.line.me/api/notify';
  
  // スクリプトプロパティからLINE NotifyのAPIトークンを取得
  let scriptProperties = PropertiesService.getScriptProperties();
  let token = scriptProperties.getProperty('LINE_NOTIFY_TOKEN');
  
  if (!token) {
    Logger.log("Error: LINE Notify token is not set in script properties.");
    return;
  }
  
  // リクエストのペイロード
  let payload = {
    'message': text
  };
  
  // オプション設定
  let options = {
    'method': 'post',
    'headers': {
      'Authorization': 'Bearer ' + token
    },
    'payload': payload
  };

  try {
    // LINE Notify APIにリクエストを送信
    let response = UrlFetchApp.fetch(url, options);
    let result = JSON.parse(response.getContentText());

    // LINE Notify APIからのレスポンスを確認
    if (response.getResponseCode() === 200) {
      Logger.log("Message sent successfully via LINE Notify.");
    } else {
      Logger.log("Error: " + result.message);
    }

  } catch (error) {
    Logger.log("Error sending message via LINE Notify: " + error.toString());
  }
}
```

### 各部分の説明

#### 1. 関数の定義

```javascript
function sendMessageToLineNotify(text) {
```

この関数は、引数 `text` に渡された文字列をLINE Notifyに送信します。`text` は通知メッセージの内容です。

#### 2. スクリプトプロパティからAPIトークンを取得

```javascript
let scriptProperties = PropertiesService.getScriptProperties();
let token = scriptProperties.getProperty('LINE_NOTIFY_TOKEN');
```

スクリプトプロパティに保存しているLINE NotifyのAPIトークンを取得します。スクリプトプロパティを使用することで、APIトークンなどの機密情報をスクリプト内に直接記述せずに扱うことができます。

**注意**: トークンが設定されていない場合、エラーメッセージを表示して処理を終了します。

#### 3. ペイロードとオプションの設定

```javascript
let payload = {
  'message': text
};

let options = {
  'method': 'post',
  'headers': {
    'Authorization': 'Bearer ' + token
  },
  'payload': payload
};
```

`payload` には送信するメッセージが含まれており、`options` でPOSTリクエストの詳細を設定します。`Authorization` ヘッダーにAPIトークンを付加することで、LINE Notifyに認証します。

#### 4. メッセージの送信

```javascript
let response = UrlFetchApp.fetch(url, options);
```

`UrlFetchApp.fetch()` を使用して、LINE Notify APIにメッセージを送信します。この際、リクエスト結果は `response` 変数に格納されます。

#### 5. レスポンスの確認とエラーハンドリング

```javascript
if (response.getResponseCode() === 200) {
  Logger.log("Message sent successfully via LINE Notify.");
} else {
  Logger.log("Error: " + result.message);
}
```

レスポンスコードが `200` の場合、メッセージ送信が成功したことを示します。その他の場合は、エラーメッセージを表示します。また、例外が発生した場合は、`try-catch` ブロックでエラーを捕捉し、ログに出力します。

```javascript
catch (error) {
  Logger.log("Error sending message via LINE Notify: " + error.toString());
}
```

## スクリプトプロパティにAPIトークンを設定する方法

スクリプトプロパティにLINE NotifyのAPIトークンを設定するには、以下の手順を実行してください。

1. Google Apps Scriptのエディタ画面で、`ファイル > プロジェクトのプロパティ`を選択します。
2. 「スクリプトのプロパティ」タブを開き、「+ プロパティを追加」をクリック。
3. 「LINE_NOTIFY_TOKEN」という名前でAPIトークンを追加します。

## 終わりに

この記事では、GASを使ってLINE Notifyにメッセージを送信する方法を紹介しました。スクリプトプロパティを活用することで、セキュアにAPIトークンを管理でき、通知機能を簡単に実装することが可能です。

LINE Notifyを使った通知機能は、タスクの完了報告やアラート通知など、様々な用途で活用できます。ぜひ、自分のプロジェクトに取り入れてみてください。