0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

毎週月曜日に今週分の議事録を各Slackへ送る(GAS)

Last updated at Posted at 2020-07-29

今回成し遂げること

  1. カレンダーから予定を検索し、
  2. マスタードキュメントから雛形コピーし、
  3. 新規ドキュメントを生成し、そのURLを返す。

コード

##1. Googleカレンダーから1週間分の定例予定を抽出

カレンダーから予定を抽出する
CalendarApp.getDefaultCalendar().getEvents(now, end, {search: "検索したい文字列をかく"})[0];

補足:searchの他にもこんなoptionがあります。
start — 条件に一致する予定が複数ある場合に、何個目からスタートするかを指定(整数)
max — 条件に一致する予定が複数ある場合に、取得する予定の最大数を指定(整数)
author — 予定の作成者を指定(文字列)
search — 含まれる文字列を指定(文字列)
statusFilters[] — 参加状況のを指定(配列)

nowには今日、
endには1週間後を入れます。

今日と1週間後
var now = new Date();
var end = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000));// 一週間後

nowとendを入れたら、eventを取り出します。

カレンダーの内容を取り出す
 var events = CalendarApp.getEvents(startTime, endTime);
  for (var i in events) {
    var TITLE = events[i].getTitle(); //title
    var DATE = events[i].getDateFormatted(); //date
    var DURATION = events[i].getDuration(); //duration
  }

##2. マスタードキュメントから記事を新規生成

今日と1週間後
function makeArticle(TITLE,DATE,DURATION) {

  //マスタードキュメントを定義
  var targetDoc = DocumentApp.openById("xxxxxxxxxxxxxxxxxxxxx");
  //IDを別に書き出して、以下のコードでもOK
  //var targetDoc = DriveApp.getFileById(fileId);

  //コピー先に名前をつけて作成。
  var docName = '[[TITLE]]' + '[[DATE]]' + '_議事録';
  var newdoc = targetDoc.makeCopy(docName + "_" + formattedDate);

  //タイトル、本文をカレンダーの内容に書き換える
  var title = newdoc.getName().replace('[[DATE]]',DATE).replace('[[TITLE]]',TITLE) ;
  var body = newdoc.getBody()
                .getText()
                .replace('[[DATE]]', DATE)
                .replace('[[DURATION]]', DURATION);
  return {
    title: title,
    body: body
  };
}

##3. 生成した記事を格納&URL取得

格納とURL取得

  //ドキュメントを格納するフォルダを取得
  var targetFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxx");

  //指定したフォルダに所属(移動)させる
  var docFile = DriveApp.getFileById(newdoc.getId());
  targetFolder.addFile(docFile);

  //作成したドキュメントURLを取得
  var documentUrl = newdoc.getUrl();

Slackへの送り方はこちらをご覧ください。
<Slack>Slackに通知する関数を書いて、いつでも引用できるようにする(GAS)

参考
Google Apps Script (GAS) で毎週 30 分の雑務を自動化した話
Google DocumentをGoogle Apps Scriptでコピーする方法

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?