11
8

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 1 year has passed since last update.

SupershipグループAdvent Calendar 2022

Day 16

GASを用いた便利ツール2点 「Google Calendarから各タスクの工数確認」「Google Driveのファイル一覧確認」

Last updated at Posted at 2022-12-15

この記事は、Supershipグループ Advent Calendar 2022の 16日目の記事になります。

去年はGoogleスプレッドシートのタスクリストをslackへ通知についての記事を作成しましたが今年は、GAS(Google App Script)を用いた便利ツールの記事にしようと思います。

「参考サイトのコードを一部カスタマイズしたもの」ではありますが、2種類紹介します。

目次

1. Google Calendarのイベントから各タスクの工数確認ツール
2. Google Driveのファイル一覧確認ツール

1. Google Calendarのイベントから各タスクの工数確認ツール

目的

Googleカレンダーに登録したイベントとそれぞれの時間をGASによりスプレッドシートへ集計します。

背景

2019年に「タスク名を実際に稼働した時間帯にGoogleカレンダーに入れておくことであとからどのタスクにどれくらい時間を使ったかがわかるツールを作成する取り組みがありました
(余談ですが、この時にGoogle Calendar APIをいじることで、一昨年のアドベントカレンダーで紹介したツールの作成にも繋がりました)。
この試みは完成しないまま終了したのですがその後、このツールをほしいと思い、去年(2021年)の12月頃に再び作成を試みたところ、こちらのサイトを見つけたため参考にして作成しました。

用いるもの

  • Googleカレンダー
  • Googleスプレッドシート
  • Google App Script

内容

基本的にこちらの参考サイトのコードとなります。
変更点としましては、
99行目あたり(isExclusionの中)に、

// 「工数管理用」を含まないものはスキップしたい
if (/工数管理用/.test(event.getTitle())) return false;

という一文を追加しています。

変更点の意図

「カレンダー上で30分で設定されていたミーティングが15分で終わったが主催者が他の人で変更権限が無いため時間変更できない」というようなケースがある場合に対応するためです。
工数管理用に実際にかかった時間で自分で別途カレンダーにイベントを入力します。
例:「タスクA MTG 工数管理用event」

コード外の工夫

  • PCの辞書ツール(私の環境はMacで、Google日本語入力辞書ツールを利用しています)で
    「こうすう」に「工数管理用event」を紐付けることで入力時間は少し短縮しています。

2.Google Driveのファイル一覧確認ツール

目的

Google Drive内のファイルの一覧をGASによりスプレッドシートへ集計します。

背景

「Drive内の条件に一致するファイルについて一つ一つ中身を確認していきたい」という目的です。
Google Drive検索だと一つ一つ見ていった時に「どこのファイルまで確認済みだったか」が途中でわからなくなったり、スクロールして下の方まで行っていたものが、誤ってリロードしてしまうと上に戻ったりしてしまうため、チェックシートの役割も担うようなものが欲しかったです。
Google Drive検索の結果のexportが調べても方法を見つけることができなかったためGASを利用しようと思い、こちらのサイトを参考に作成しました。
対象のDrive内のファイルをすべて表示後、スプレッドシート上でフィルターをかけるという考えです。

用いるもの

  • Googleスプレッドシート
  • Google App Script

内容

基本的にこちらのサイトのコードとなります。

変更点① 54行目

const fileValueEn = '=HYPERLINK("' + file.getUrl() + '",' + 'GOOGLETRANSLATE("' + file.getName() + '", "ja", "en")' + ')';
    sheet.getRange(row, 3).setValue(fileValueEn);

部分をコメントアウトし

sheet.getRange(row, 3).setValue(file.getMimeType());

としています。

変更点②
56行目
(sheet.getRange(row, 4).setValue(file.getLastUpdated());の下)に

var parents_folders_list = [];
    parent = file.getParents();
    while (parent.hasNext()) {
      parent = parent.next();

      parents_folders_list.push(parent.getName());

      parent = parent.getParents();
    }

    sheet.getRange(row, 5).setValue(parents_folders_list.reverse().join('/'));

を追加しています。
参考サイト

変更点の意図

変更点①
ファイルの形式を合わせて出力確認するために追加しました。
スプレッドシート上でフィルターすることでほしい形式のファイル一覧を取得することが可能です。

変更点②
ファイルの置き場所までのパスを表示する目的で追加しました。
変更前の状態でもA列にファイルが置かれているフォルダ名が表示されますが、さらにその上の階層も含めてフルパスが知りたかっため追加しました。

感想

1.Google Calendarのイベントから各タスクの工数確認ツール
毎週上長との1on1があるのですが、こちらのツールでスプレッドシート上で円グラフで表示することで、今週どんなタスクにどのくらい時間を使っていたかがわかるようになり、必要以上に時間を使っているタスクがある場合は相談できたりするため作成してよかったと思っています。

2.Google Driveのファイル一覧確認ツール
用いたのは1度ですが無事動いて、やりたいことができたため良かったです。
Google Drive用CLIツールもあるようですので、そちらも試してみようと思いました。

最後に宣伝

Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しております!
ご興味がある方は以下リンクよりご確認ください!
Supershipグループ 採用サイト

参考書籍&サイト

11
8
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
11
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?