gcal — это инструмент командной строки, работающий в Node.js, который позволяет отображать список событий, вставлять или массово вставлять их через API Календаря Google.



Список событий:

Он будет перечислять сегодняшние события, если он выполняется без аргументов:

$ gcal list

Формат ответа можно настроить, но он используется по умолчанию:

Upcoming events (2017-09-07T00:00:00+09:00 ~ 2017-09-07T23:59:59+09:00)
  2017-09-07 20:00 - My favorite TV show
  2017-09-07 22:30 - Prepare tomorrow's meeting stuff

Также для задания термина можно использовать естественный язык:

$ gcal list yesterday
$ gcal list 'from tomorrow to the day after tomorrow'
$ gcal list 'since yesterday until next week'

Также могут быть указаны конкретные даты ISO:

$ gcal list -f 2017-03-23 -t 2017-03-27

Вставить событие

Также вставка может быть выполнена на естественном языке:

$ gcal insert 'Party tomorrow from 3pm to 5pm'

Вставить события, указав параметры:

$ gcal insert -s 'Party' -d 2017-03-23 -t 15:00 -D 2h

Объемная вставка

Создайте файл .json следующего формата:

$ echo \
'[{
  "calendarId": "primary", "resource": {
  "summary": "Party",
  "start": { "dateTime": "2017-09-08T20:00" },
  "end": { "dateTime": "2017-09-08T22:00" }}
},{
  "calendarId": "primary", "resource": {
  "summary": "Party again",
  "start": { "dateTime": "2017-09-08T22:00" },
  "end": { "dateTime": "2017-09-08T23:30" }}
}]' \
> events.json

И передайте его в качестве аргумента для массовой вставки:

$ gcal bulk -e events.json

Также принимается файл .js, полезный для относительных дат и многого другого:

// events.js
const today = new Date();
today.setHours('17', '00', '00');
const tomorrow = new Date(today.getTime()+1000*60*60*24);
module.exports = [{
  "calendarId": "primary",
  "resource": {
    "summary": `Release`,
    "start": {
      "dateTime": today.toISOString()
    },
    "end": {
      "dateTime": today.toISOString()
    }
  }
}, {
  "calendarId": "primary",
  "resource": {
    "summary": "Release",
    "start": {
      "dateTime": tomorrow.toISOString()
    },
    "end": {
      "dateTime": tomorrow.toISOString()
    }
  }
}];

$ gcal bulk -e ./events.js

(Доступные свойства перечислены здесь).

Некоторые варианты использования

Некоторые варианты использования включают в себя сценарии/автоматизацию, например использование в рабочем процессе непрерывной интеграции (например, вставка события в календарь после выпуска рабочей версии).

…Или только для людей, которые живут в терминале.

Об аутентификации и пользовательской конфигурации

Авторизация и аутентификация выполняются с помощью OAuth 2.0, подготовка ваших учетных данных займет всего около 2 минут.

Также конфигурацию по умолчанию можно переопределить с помощью файла конфигурации.

Для получения дополнительной информации проверьте README репозитория. Любая обратная связь приветствуется!