$30 off During Our Annual Pro Sale. View Details »

Practice! Let's experience more comfortable Google services with Google Apps Script!

Kimiya Kitani
February 10, 2019

Practice! Let's experience more comfortable Google services with Google Apps Script!

The presentation aims to experience more comfortable Google services with Google Apps Script.

The first theme is to automatically save as Gmail attached documents to Google Drive on senders under a specific condition (Gmail search). The folder name is "From" information (Display Name ) and the file name is "From" information and the attached file name (Display Name _the attached file name). When you receive several hundreds documents for offering, you will expect that it spends so many times to open the attached documents. In this case, this Google Apps Script will reduce the operation cost.

The second theme is to automatically send access log of multiple Google Analytics to the e-mail as HTML and PDF. When you need to report so many Google Analytics data, this Google Apps Script will reduce the operation cost.

===
このプレゼンテーションは、Google Apps Scriptを使ってGoogleサービスの利便性を向上する体験をするためのものです。基本的にドキュメントに沿って作業すれば簡単に使えます。

一つ目のテーマは、特定条件(Gmail検索)でGmailに添付されたメールを送信者ごとにGoogle Driveに自動保存するスクリプトです。もし、募集のためのデータを数百添付ファイルとして受け取る場合、添付ファイルを開くのに時間がかかってしまうと思います。そういった場合、本ツールを使えばその運用コストを大幅に軽減できます。

二つ目のテーマは、複数のGoogle Analytics データをまとめてHTMLとPDF形式で自動メール送信する機能です。もし沢山のGoogle Analytics を管理しデータを報告する必要がある場合には、本ツールは役立つと思います。

Kimiya Kitani

February 10, 2019
Tweet

More Decks by Kimiya Kitani

Other Decks in Technology

Transcript

  1. 実践!Google Apps Script を
    使ってより便利な Google サー
    ビスを体験してみよう!
    第1回 ローカル Meetup in Okayama
    2019年2月10日
    @kimipooh
    (Google Product Expert: Gmail, Chrome, G Suite)

    View Slide

  2. 自己紹介(1) Google 関連の活動
    Google Top Contributor
    サミット 2017
    Google Product Experts
    サミット 2018
    Google プロダクトエキスパート
    G Suite管理者
    Google Top Contributor
    サミット 2015
    Google Top Contributor
    サミット 2013
    Google Meetup Tokyo 2014
    日本・韓国合同
    Photo by
    https://plus.google.com/+GoogleJapan/po
    sts/FnfpWyxAo9k

    View Slide

  3. 自己紹介(2) WordPress 関連の活動
    WordCamp Kansai 2016
    実行委員&スピーカー
    WordCamp Kyoto 2017
    実行委員
    WordPress Meetup (2017)
    登壇(ハンズオン)
    WordCamp Osaka 2018
    実行委員& スピーカー
    プラグイン開発 &翻訳 & コミュニティ
    https://profiles.wordpress.org/kimipooh

    View Slide

  4. 本日のトピック
    ① 特定条件に一致した Gmail の添付ファイルを
    Googleドライブへ保存する方法
    ② Google Analytics データを Googleスプレットシート
    に集約し、PDFでメール添付する方法

    View Slide

  5. ① 特定条件に一致した Gmail の添付ファイルを
    Googleドライブへ保存する方法
    STEP 1. Google Apps Script 環境を整えよう!(1 スライド)
    STEP 2. Google Apps Script コードを作成しよう!(6 スライド)
    STEP 3. 動作確認しよう!(2 スライド)
    STEP 4. スケジュールで自動実行しよう!(2 スライド)

    View Slide

  6. 目次
    1. 対象の絞り込み
     「スターがついていない AND 検索演算子」(Gmailの検索機能)で該当メールを絞り込む
    2. 添付ファイルがあれば Googleドライブに保存
     指定したフォルダに「差出人_ファイル名」で保存
    3. 処理したメールにスターをつける
    処理の概要

    View Slide

  7. STEP 1. Google Apps Script 環境を整えよう!(① / 1)
    Google ドライブで、Google Apps Script を有効にしよう!
    ① 新規 > その他 > アプリの追加を選択
    ② 検索窓に「Google Apps」を入れて Enter
    「Google Apps Script」について「+接続」をボタンをクリック

    View Slide

  8. STEP 2. Google Apps Script コードを作成しよう!(① / 6)
    Google ドライブで、Google Apps Script 新規作成
    ① 新規 > その他 > アプリの追加を選択

    View Slide

  9. STEP 2. Google Apps Script コードを作成しよう!(② / 6)
    サンプルコードをコピー
    ② サンプルスクリプト(GitHUB)のサイトにアクセス
    https://github.com/kimipooh/getAttechedFilefromGmailtoDrive
    (短縮:http://bit.ly/2UMWDxm )
    「getAttechedFilefromGmailtoDrive_star2」を開く
    ③ Raw ボタンを押して、表示された文字をすべ
    て選択してコピーする。

    View Slide

  10. STEP 2. Google Apps Script コードを作成しよう!(③ / 6)
    サンプルコードを Google Apps Scriptにペースト
    ④ コードをすべて削除して、先程コピーしたサン
    プルコードをペーストする
    ⑤ 保存する(名前は自由)

    View Slide

  11. STEP 2. Google Apps Script コードを作成しよう!(④ / 6)
    保存したい Google Drive のフォルダIDを設定しよう!
    ⑥ Google Drive上でフォルダを作成し、そのフォ
    ルダを開きます。そしてURLのあるフォルダIDを
    コピーします。
    https://drive.google.com/drive/u/0/folders/○○○○○
    URLの /folders/ の次にある文字列が、フォルダーID
    のため、ここを選択してコピーします。
    ⑦ Google Apps Script の
    var FONDER_ID = “フォルダID”;
    にフォルダIDをペーストします。
    フォルダID

    View Slide

  12. STEP 1. 対象の絞り込み(⑤ / 6)
    Gmail検索で添付ファイルのあるメールがいくつかヒットする
    条件を見つけよう!
    -is:starred has:attachment after:2019/02/01
    スターがついていない
    添付ファイルがある
    2019年2月1日以降 あまり多いと時間がかかる
    ので、テストでは絞り込む

    View Slide

  13. STEP 2. Google Apps Script コードを作成しよう!(⑥ / 6)
    検索キーワードを Google Apps Script に設定しよう!
    var SEARCH_TERM = '-is:starred has:attachment after:2019/02/01';
    最後に保存してくだ
    さい。

    View Slide

  14. STEP 3. 動作確認しよう!(① / 2)
    Google Apps Script を実行してみよう!
    ① ▶ マークをクリックします。
    ② 最初の一度は、自作スクリプトは安全性が不明のため、
    警告がでます。ので警告を無視して実行します。

    View Slide

  15. STEP 3. 動作確認しよう!(② / 2)
    差出人ごとのフォルダに保存されている
    表示名 <メールアドレス>
    “表示名” <メールアドレス>
    表示名
    アイコン
    差出人:○○メールアドレスから 4通添付ファイル

    View Slide

  16. STEP 4. スケジュールで自動実行しよう!(①/ 2)
    スケジュールの設定
    ① 編集 > 現在のプロジェクトのトリガーを選択
    ② 次ページの注意点を参考に間隔を設定するとよいです。

    View Slide

  17. 注意点
    サンプルコードは、一度のヒット数を30に制限しています。
    var myThreads =
    GmailApp.search(SEARCH_TERM, 0, 30);
    https://developers.google.com/apps-script/guides/services/quotas
    最大500まで設定可能
    Quotas for Google Services
    Email read/write (excluding send) によれば、
    ● 無料版Gmail 20,000件/日
    ● G Suite    50,000件/日
    です。
    一回30件なら、666回まで実行できますが、最大の 500にすると わずか40回実行するだけで 20,000 回にな
    ります。もし5分おきに自動実行するトリガーをしかけていたなら、 1時間に12回実行されるわけなので G
    Suite なら耐えられますが、無料版はオーバーしちゃいますので注意。
    STEP 4. スケジュールで自動実行しよう!(② / 2)

    View Slide

  18. ② Google Analytics データを Googleスプレットシート
    に集約し、PDFでメール添付する方法
    要 Google Analytics で管理しているウェブサイト

    View Slide

  19. (前半)複数の Google Analytics データを Googleスプレットシートに
    保存
    STEP 1. Google Analytics データを取得するまで(5 スライド)
    STEP 2. 纏めページの作成(2 スライド)
    STEP 3. スケジュールで自動実行しよう!(1 スライド)
    (後半)Googleスプレットシートの特定シートデータをメール本文
    (HTML)と PDF にして添付したメール送信
    STEP 4. Google Apps Script でメール送信設定をしよう!(3 スライド)
    STEP 5. メール送信の動作確認をしよう!(2 スライド)
    STEP 6. スケジュールで自動実行しよう!(1 スライド)
    目次

    View Slide

  20. 完成図
    ① 複数の Google Analyticsデータから
    2018年度のアクセスログを国別に収集する
    ②それをPDFにしてメール添付する

    View Slide

  21. STEP 1. Google Analytics データを取得するまで(① / 5)
    Google Analytics の ビュー IDを確認
    Googleアカウントで
    管理している Google
    Analytics があること
    を確認

    View Slide

  22. STEP 1. Google Analytics データを取得するまで(② / 5)
    Google スプレットシートに Google Analytics アドオンを追加
    ① Google スプレットシートを新
    規作成(名前もつけておく)
    ② Google Analytics で検索
    ③ + 無料 ボタンをクリック
    ④ アドオン導入アカウントを選択
    ⑤ Google Analyticsアドオン
    によるアカウントへの必要なア
    クセスを許可する
    ⑥ 追加完了

    View Slide

  23. STEP 1. Google Analytics データを取得するまで(③ / 5)
    Google Analytics アドオンで取得条件設定を作成する

    ② 入力し終わったら Create Reportボ
    タンを押す
    1) Name your report : タイトル名(自
    由記載)
    2) Select a view : Googleアカウント
    で管理している Google Analytics 一
    覧がでるので選択
    3) Choose configuration options
    この時点では入力しない(空欄)
    ③ 取得したい データが複数あるなら①、
    ②を繰り返す
    B, C, D, .. にGoogle Analytics ごとの
    データ取得設定が追加されていく。
    ※コピー&ペーストで追加してもよい

    View Slide

  24. STEP 1. Google Analytics データを取得するまで(④ / 5)
    データ取得条件設定の詳細を設定する
    Start Date: 2018-04-01
    End Date : =TODAY() - 1
    Metics:
    ga:users
    ga:pageviews
    ga:newusers
    ga:sessions
    ga:bounceRate
    ga:avgSessionDuration
    ga:organicSearches
    Dimensions: ga:country
    Order: -ga:pageviews
    今年度から昨日まで
    Metics 一覧
    https://developers.google.com/analytics/devguides/reporting/core/dimsmets
    ユーザー数
    ページビュー数
    新規ユーザー数
    セッション数
    直帰率
    平均セッション時間
    検索キーワード数
    国別
    ページビューを降順

    View Slide

  25. STEP 1. Google Analytics データを取得するまで(⑤/ 5)
    設定条件に基づいたデータの取得
    データ1 データ2
    設定
    国別データ
    トータル
    データ2
    データ1
    設定
    ① Run reports を選択

    View Slide

  26. STEP 2. 纏めページの作成(①/ 2)
    メール送信用シートの作成
    ①シート1をダブルクリックして「TOTAL Summary」に名前変更(名前固定)、シートをシートを先頭に移動
    ②体裁を整えて、各シートに文字や関数を入れ込む(下記なら、コピー&ペーストでOK)
    A1: From
    B1: ='Report Configuration'!B4
    C1: To
    D1: ='Report Configuration'!B5
    B3, C3: URLがあると分かりやすい(自由記載)
    A4-18: 項目名を入れる(自由記載)
    B4: ='Report Configuration'!2:2
    B5: =INDIRECT(B4 & "!C12")
    B6: =INDIRECT(B5 & "!B12")
    B7: =COUNTA(INDIRECT(B4 & "!A16:A1000"))+IF(COUNTIF(INDIRECT(B4
    & "!A16:A1000"),"(not set)"), -1,0)
    B9: =INDIRECT(B4 & "!A16:A25")

    View Slide

  27. STEP 2. 纏めページの作成(② / 2)
    複数の Google Analyticsデータがある場合
    ③ 赤い枠を選択してコピーし、緑の部分へペーストする ④体裁を整える

    View Slide

  28. STEP 2. 纏めページの作成(付録)
    関数の意味
    B5: =INDIRECT(B4 & "!C12")
     「レポート名」シートの C12データを挿入
    B6: =INDIRECT(B5 & "!B12")
     「レポート名」シートの B12データを挿入
    B7: =COUNTA(INDIRECT(B4 & "!A16:A1000"))+IF(COUNTIF(INDIRECT(B4 & "!A16:A1000"),"(not set)"), -1,0)
     「レポート名」シートのA16-1000(国別項目が存在する場合の総数をカウント、ただし (not set) があった場合には -1 する
    (国名がない unknown のため))
    B9: =INDIRECT(B4 & "!A16:A25")
     「レポート名」シートの A16-25 のデータを順に挿入(トップ10)

    View Slide

  29. STEP 3. スケジュールで自動実行しよう!(①/ 1)
    スケジュールの設定
    ① Schedule reportsを選択 ② Enableをクリックし、毎日実行(下記は、4時-5時のタイミン
    グ)を設定し「Save」ボタンをクリック
    毎日、4-5時のタイミングで、2018年4月1日から、一日前ま
    での Google Analytics のデータを再構築する

    View Slide

  30. STEP 3. スケジュールで自動実行しよう!(①/ 1)
    スケジュールの設定
    ① Schedule reportsを選択 ② Enableをクリックし、毎日実行(下記は、4時-5時のタイミン
    グ)を設定し「Save」ボタンをクリック
    毎日、4-5時のタイミングで、2018年4月1日から、一日前ま
    での Google Analytics のデータを再構築する

    View Slide

  31. STEP 4. Google Apps Script でメール送信設定をしよう!(①/ 3)
    送信先メールアドレス用シートの作成「Send-Emails」
    ① シート部分の「+」をクリックして新規シートを作成
    ② シート名を「Send-Emails」に変更
    ③ 下記のようなシートを作成します。
    1行目はメモ(自由記載)
    2行目は項目名(自由記載)
    3行目以降(送信先)
      A3-100 : 表示名
      B3-100 : メールアドレス
     

    View Slide

  32. STEP 4. Google Apps Script でメール送信設定をしよう!(②/ 3)
    Google Apps Scriptを登録しよう
    ① GitHUBで公開している sendArticleCountEmail.js を開きます。
    https://github.com/kimipooh/sendArticleCountEmails/blob/
    master/sendArticleCountEmails.js
    (短縮:http://bit.ly/2DX4q5T ) ② Rawボタンをクリックし、表示されたデータをすべて選択してコピーしま
    す。

    View Slide

  33. STEP 4. Google Apps Script でメール送信設定をしよう!(③/ 3)
    Google Apps Scriptを登録しよう
    ① Googleスプレットシートの「ツール」→「スクリプトエディ
    タ」を選択
    ② コードを全部消して、先程コピーしたものをペースト
    します。
    ③ 名前をつけて保存します。
    下記では sendArticleCountEmails という名前で保存

    View Slide

  34. STEP 5. メール送信の動作確認をしよう!(① / 2)
    Google Apps Script を実行してみよう!
    ① スクリプトエディタの「関数を選択」から
    「sendArticleCountEmails」を選択します。
    ② 最初の一度は、自作スクリプトは安全性が不明のため、
    警告がでます。ので警告を無視して実行します。

    View Slide

  35. STEP 5. メール送信の動作確認をしよう!(② / 2)
    メール送信されたデータを確認しよう!
    メール本文はHTML形式(tableタグ)、添付は
    PDFがついて下記のようなデータになっていた
    ら成功です!

    View Slide

  36. STEP 6. スケジュールで自動実行しよう!(①/ 1)
    スケジュールの設定
    ① 編集 > 現在のプロジェクトのトリガーを選択
    ② 「+ トリガーを追加」ボタンを押し、1日に1度、STEP3 でスケジュー
    ル設定した、データ取得タイミング(3時-4時)以降のタイミングでスケ
    ジュールを設定しましょう。

    View Slide

  37. Google Apps Script は奥が深い
    https://kitaney-google.blogspot.com/2019/01/b-google-apps-script-gmail.html
    特定フォルダ以下(階層あり)に保存されたファイルの更新日時を取り出し、
    Googleスプレットシートに保存
     *Googleフォーム経由で提出された資料( Googleドライブに保存)について、いつ誰が提出し
    たかの把握をしたい!とか・・・( IT管理者が調べなくていい)
    JavaScript はデザイナーでも学ぶ手軽なウェブ用プログラミングなのでこれ
    を機会に勉強するのもありかも!
    その他にやってみたこと

    View Slide