1 of 54

第6回

Google Apps Script ハンズオン

ラクラク事務ライフを目指す!

Excelマクロの仕事も、

Googleさんにやってもらいましょう

株式会社 永和システムマネジメント

2 of 54

自己紹介

名前:羽根田 洋(はねだ ひろし)

仕事:GoogleAppsを使ったシステム開発の企画

   新規開拓が主な営業

ここ最近:お付き合いする人が劇的に増える

  顧客に深く関わることで問合せが劇的に増える

2

3 of 54

アジェンダ

GoogleAppsScriptとは

利用シーン/応用例

ハンズオン

 お題の説明

 メソッドの対応づけ/UIの仕組み

 ハンズオン

まとめ

3

4 of 54

このハンズオンの動機

ある、お客様からよく言われる

 「Excelマクロがあって、社内のGoogle Appsへの移行が難しい」

だったら、なんとかしよう!

4

5 of 54

今回、対象にしているExcelマクロ

操作記録したExcelマクロ

画面無しのExcelマクロ

画面有りのExcelマクロ

5

6 of 54

Google Apps Scriptとは

6

7 of 54

GoogleAppsScriptとは?

Googleが提供するサービス郡を操作するためのAPI、および実行環境

 スプレッドシート、GoogleDrive、Googleカレンダー、Googleサイト

などをプログラム(JavaScript)で実行することができる

7

8 of 54

何ができるの?

Google Drive ファイルの作成、コピー、移動など

Google Spread Sheet データの読み取り、書込、レイアウトの操作

Google Calendar イベントの参照、登録

Gmail メールの参照、送信、削除、など

その他 トリガー実行、html作成、などなど

更には、これらを組み合わせて実行することも可能。詳しく調べたい人は↓

 https://developers.google.com/apps-script/

8

9 of 54

何がうれしいの?

準備するのは、Googleアカウントのみ。すぐに始められる。

開発環境も既に揃っている。○○のインストールや○○の認証が、セットアップが、、、、不要。

無料で始められる。

Web上で動く。PCをシャットダウンしてても、勝手に動いてくれる(設定さえすれば)

分からなこと、やりたいことを調べればWeb上に情報がいっぱい

9

10 of 54

注意点

ネットワークへの常時接続が必要

プログラムの使用制限が存在している

プログラムの連続起動時間が5分以内、スプレッドシートを作成する回数、とか。

https://docs.google.com/a/macros/esm.co.jp/dashboard

但し、ちょっとした困り事を解決するには、当面困らないでしょう。

10

11 of 54

利用シーン

11

12 of 54

GoogleAppsScriptで繋げて問題解決

12

営業管理

システム

稼働管理

システム

棚卸し

システム

販売管理

システム

販売管理

システム

回答集計

システム

Webサービス

デバイス

サードパーティ製

サービス

,etc

バーチャル秘書(Bot)

13 of 54

GoogleAppsScriptで繋げて問題解決

13

営業管理

システム

稼働管理

システム

棚卸し

システム

販売管理

システム

販売管理

システム

回答集計

システム

Webサービス

デバイス

サードパーティ製

サービス

,etc

バーチャル秘書(Bot)

14 of 54

こんな事繰り返しやってないですか?

定期的な注文書発行業務

14

15 of 54

GoogleAppsScriptで自動化できます

めんどくさいことはGoogleさんにやってもらいましょう

15

16 of 54

例えば、こんなことが手軽に!

16

17 of 54

共有カレンダーにタスクを一括登録

スプレッドシートに書き込まれた仕事内容を締切日に応じてカレンダーに予定登録する。

→締切の管理はシステムに!

17

18 of 54

差込印刷

メールテンプレートに宛名を変えて対象アドレスに送信する

書類テンプレートに値を挿入して書類作成する

→定型業務の案内や催促メール(その人だけに送りたい)、定型書類の自動作成

18

19 of 54

Excelからのデータ自動読込

定型フォーマットのExcelデータをGoogleにアップロードし、スプレッドシートに必要な値を抽出する

→集計作業の効率化

19

20 of 54

応用例

20

21 of 54

工場・倉庫からの棚卸システム運用をクラウドで手軽に実現

21

22 of 54

顧客資料の共有化と商談資料作成に関する

業務効率化(添付ファイルの最新版がわからない)

22

23 of 54

業務データの一元管理と効率化

23

24 of 54

デモンストレーション

 ・業務データの一元管理

 ・スマホからのデータ入力

24

25 of 54

ハンズオン開始

 始めてのgoogle Apps Script

25

26 of 54

初めてのGoogle Apps Script(GAS)

copyFolder

フォーマット変換

26

27 of 54

最初に

スプレッドシートを作成してください。スプレッドシート名は「初めてのGAS」

以下のソースコードを閲覧下さい。

https://script.google.com/d/1IU69DXV74WW5gA9JQg409QOWNrpasONRZf2TyJdzDsTgWuXqpFB_F6ay/edit?usp=sharing

27

28 of 54

初めてのGAS

メニューからスクリプトエディタを選択して、スクリプト編集画面を開きます

28

29 of 54

無題のプロジェクトが開きます

29

30 of 54

初めてのGAS

1_start.gsのソースコードをコピペして下さい

30

31 of 54

初めてのGAS(スクリプトの実行)

Hello Worldを選択し実行ボタン(▶)をクリックすると、プログラムが実行されます。

プログラム実行の承認を行う。

スプレッドシートに戻ってもらい

Hello Worldと書かれたダイアログが表示されていれば成功です。

31

32 of 54

初めてのGAS(テキスト読込、テキスト書き出し)

同じように残りの2つの関数も実行しましょう。

A1セルに値を入れる。getValueFromSheetを実行するとスプレッドシートから値を取得してダイアログに表示します。

setValueIntoSheetはスプレッドシートにB1セルに指定した値を書き込みます。

32

33 of 54

始めてのGAS(メール送信)

スクリプトファイルを新規作成する

2_sendmail.gsのソースコードをコピーして下さい。

your_emailadressの部分をご自身のメールアドレスに書き換えてください。

先程と同様、send_mailの関数を選択して、実行します。

あなたのメールアドレスに「メールを送信しました」と書かれたメールが届けば成功です。

33

34 of 54

初めてのGAS(読み込み+メール送信)

スプレッドシートから読み込んだデータをメールで送ります。

シートを新規追加します。

コピー元のスプレッドシートを参考に日付とお仕事の内容を書いて下さい。

関数リストからsend_email_mytaskを選択して実行します。

「今日のお仕事」というメールが送られていれば成功です。

34

35 of 54

 ハンズオン事前準備

35

36 of 54

以下のフォルダ/ファイルを開いてください

36

37 of 54

コピー手順1 コピー先フォルダを作成する

ご自身のGoogleDrive内にフォルダを作成してください。

フォルダ名はフォーマット変換にしてください

フォルダのIDをコピーしてください

37

38 of 54

手順2 copyFolderからフォルダコピーする

38

コピー元フォルダIDをコピーしてください

コピーした定形作業一括登録フォルダーのIDをペーストしてください

ご自身のGoogleアカウントを入力してください

クリックしてください

39 of 54

手順3 コピーされたか確認する

フォーマット変換フォルダにコピーされたら完了です。

39

40 of 54

ハンズオン開始

 フォーマット変換

40

41 of 54

お題の説明

単票形式のシートを別のフォーマットに変換するマクロがあります。

41

42 of 54

Google Apps Scriptの考え方(超ざっくり)

  • なんでも「オブジェクト」
    • フォルダ(Folder)も、ファイル(File)も
    • スプレッドシート(SpreadSheet)も、シート(Sheet)も、範囲(Range)も
    • オブジェクトで、操作したい対象物(例:シート)を、特定できる
  • オブジェクトは、独自の値を持っている(例:セルの入力値や背景色)
  • 特定したオブジェクトに対して、命令(メッセージ)を投げる
  • そうしてら、動く!
  • APIとは、オブジェクトの値と、オブジェクトに対する操作をまとめたもの

42

43 of 54

オブジェクトの位置づけ

(スプレッドシート)

43

Spreadsheetクラス

スプレッドシート全体の操作

 -共有権限

 -シートの取得、追加、削除

 、など

Sheetクラス

シートの操作

 -シート操作(行追加、列追加、ソート)

 -範囲の取得

 、など

Rangeクラス

範囲の操作

 -値の読み書き

 -範囲の装飾(枠線、フォント、色)

 、など

SpradsheetApp

スプレッドシートオブジェクト

 -スプレッドシートの取得

 -スプレッドシートの作成

 、など

44 of 54

オブジェクトの位置づけ

(フォルダー、ファイル)

44

Folderクラス

フォルダの操作

 -共有権限の取得、操作

 -フォルダ内フォルダの取得、追加、削除、作成

 -フォルダ内ファイルの取得、追加、削除、作成

 、など

Fileクラス

ファイルの操作

 -共有権限の取得、操作

 -ファイル情報の取得、操作

 -ファイルのコピー

 、など

DriveApp

フォルダ、ファイルオブジェクト

 -フォルダ、ファイルの取得

 -フォルダ、ファイルの作成(マイドライブ)

 、など

45 of 54

メソッドの対応づけ

(OpenFile)

45

取込対象のファイルを取得

DriveAppクラス

 getFolderByID()

Folderクラス

 getFiles()

シートの取得と削除、コピー

Spreadsheetクラス

 deleteSheet()

 getSheetByName()

Sheetクラス

 copyTo(Spreadsheet)

46 of 54

メソッドの対応づけ

(copyData)

46

値の読み書き

Sheetクラス

 getRange()

Rangeクラス

 getValue()

 setValue()

47 of 54

メソッドの対応づけ

(reset)

47

シートの取得と削除、コピー

Spreadsheetクラス

 getSheetByName()

 deleteSheet(Sheet)

Sheetクラス

 copyTo(Spreadsheet)

48 of 54

メソッドの対応づけ

(save)

48

シートから情報を読み取りファイル名を新規作成し

シートをコピー

SpreadsheetAppクラス

 getActive()

Spreadsheetクラス

 getsheetByName()

sheetクラス

 getRange()

Rangeクラス

 getValue()

SpreadsheetAppクラス

 create(filename)

Sheetクラス

 copyTo(spreadsheet)

49 of 54

Formの対応づけ

49

いくつか選択肢がある

・メニューバーからファンクションを起動 ← 今回はこれ

・図形にファンクションを起動

・sidebarからにファンクションを起動する

・スクリプトエディタから起動する

50 of 54

オプション:作成注文書一覧

(違った値の読み書き)

50

保存したファイル情報を一覧形式で書き込む

Fileクラス

 getLastUpdated()

 getName()

 getOwner()

 getURL()

SpreadsheetAppクラス

 getSpreadsheetById()

Spreadsheetクラス

 getSheetByName()

Sheetクラス

 appendRow()

51 of 54

ハンズオン終わり

51

52 of 54

最後に

当たり前と思っていることの中に改善ポイントが存在しています。

例えば、以下の様なことが多い場合、改善ポイントが存在してる可能性が高いです。

 Excelで配布したり、集計したりしている

 印刷された紙を元に手入力している

 突合せ作業が頻繁に行われている

52

53 of 54

ちょっとした工夫でGoogleに仕事をしてもらおう

今日、やってみたことを基に、仕事を楽にすることがないか、考えてみましょう。

単純作業の繰り返しは、GoogleAppsScriptにやってもらい、快適な業務環境を自分で作りましょう

もし、お悩みにがあれば、以下まで

 http://www.esm.co.jp/corporate/contact.html

53

54 of 54

アンケート回答のお願い

54