LoginSignup
3
5

More than 1 year has passed since last update.

Googleカレンダーの予定をTrelloに流し込むGAS

Posted at

概要

スプレッドシートでボタンを押すと、Googleカレンダーの1週間の予定をTrelloに流し込む機能を作りました。
Googleスプレッドシート からボタンを押すことで起動する仕組みになっています。
この記事は自分の備忘録も兼ねて書きました。

なぜ作ったか

個人の予定をGoogleカレンダーで管理していたが、それをタスクとしてチームのtrelloにも登録する必要があったので作りました。

予定を流し込むために必要なもの

Google カレンダーID
Trello APIキー
Trello トークン
Trello リストID
これらは以下で取得していきます。

カレンダーIDの取得

Googleカレンダーを開き、「オーバーフローメニュー」→「設定と共有」を押します。
スクリーンショット 2021-03-29 9.35.54(2).png
設定画面が開き、中にカレンダーIDが書いてあります。

Trello APIキーの取得

Trelloにログインした状態でhttps://trello.com/1/appKey/generateを開くと、開発者向けAPIキーを取得することができます。

Trelloトークンの取得

https://trello.com/1/authorize?key=APIキー&name=&expiration=never&response_type=token&scope=read,write
を開くと、トークンを取得できます。

TrelloリストIDの取得

TrelloボードIDを取得し、それを使用してTrelloリストIDを取得します。

まず、Trelloのプロフィール画面からユーザー名を取得します。
取得したユーザー名、APIキー、トークンを使用し、以下のようにAPIを叩くことで、ボードIDを取得できます。

$ curl "https://trello.com/1/members/ユーザー名/boards?key=APIキー&token=トークン&fields=name"

カレンダーの予定を流し込みたいボードIDを使用し、以下のようにAPIを叩くことで、リストIDを取得できます。

$ curl "https://trello.com/1/boards/ボードID/lists?key=APIキー&token=トークン&fields=name"

スプレッドシートからGASを作成

スプレッドシートにGoogle カレンダーID、APIキー、トークン、リストIDを記入します。
スクリーンショット 2021-03-31 15.18.07.png

Googleスプレッドシートを開き、ツールから「スクリプトエディタ」を開きます。
以下を記述します。

function getCalendarEvents() {
  let sheet = SpreadsheetApp.getActiveSheet();
  const CALENDAR_ID = sheet.getRange("2", "2").getValue();
  const TRELLO_KEY = sheet.getRange("3", "2").getValue();
  const TRELLO_TOKEN = sheet.getRange("4", "2").getValue();
  const TRELLO_LIST_ID = sheet.getRange("5", "2").getValue();
  const calendar = CalendarApp.getCalendarById(CALENDAR_ID);

  // 期間
  let startTime = new Date();
  var endTime = new Date();
  endTime.setDate(endTime.getDate() + 7);

  const events = calendar.getEvents(startTime, endTime);

  //APIを叩き、カレンダーの情報を流し込みます。
  for(const event of events){
    var url = `https://trello.com/1/cards?key=${TRELLO_KEY}&token=${TRELLO_TOKEN}&idList=${TRELLO_LIST_ID}&name=${event.getTitle()}`;

    var headers = {
      "Accept": "application/json",
      "Content-type": "application/json"
    }

    var options = {
      "method": "post",
      "headers": headers
    };
    UrlFetchApp.fetch(url, options);
  }
}

実行するために、スプレッドシート内に図形を配置し、右クリックでスクリプトの割り当てをします。ここで「getCalendarEvents」を入力することで作成したコードを実行することができます。

参考にしたサイト

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5