第6回
Google Apps Script ハンズオン
ラクラク事務ライフを目指す!
Excelマクロの仕事も、
Googleさんにやってもらいましょう
株式会社 永和システムマネジメント
自己紹介
•名前:•羽根田 洋(はねだ ひろし)
•仕事:GoogleAppsを使ったシステム開発の企画
新規開拓が主な営業
•ここ最近:•お付き合いする人が劇的に増える
顧客に深く関わることで問合せが劇的に増える
2
アジェンダ
GoogleAppsScriptとは
利用シーン/応用例
ハンズオン
お題の説明
メソッドの対応づけ/UIの仕組み
ハンズオン
まとめ
3
このハンズオンの動機
ある、お客様からよく言われる
「Excelマクロがあって、社内のGoogle Appsへの移行が難しい」
だったら、なんとかしよう!
4
今回、対象にしているExcelマクロ
操作記録したExcelマクロ
画面無しのExcelマクロ
画面有りのExcelマクロ
5
Google Apps Scriptとは
6
GoogleAppsScriptとは?
Googleが提供するサービス郡を操作するためのAPI、および実行環境
スプレッドシート、GoogleDrive、Googleカレンダー、Googleサイト
などをプログラム(JavaScript)で実行することができる
7
何ができるの?
Google Drive ファイルの作成、コピー、移動など
Google Spread Sheet データの読み取り、書込、レイアウトの操作
Google Calendar イベントの参照、登録
Gmail メールの参照、送信、削除、など
その他 トリガー実行、html作成、などなど
更には、これらを組み合わせて実行することも可能。詳しく調べたい人は↓
8
何がうれしいの?
準備するのは、Googleアカウントのみ。すぐに始められる。
開発環境も既に揃っている。○○のインストールや○○の認証が、セットアップが、、、、不要。
無料で始められる。
Web上で動く。PCをシャットダウンしてても、勝手に動いてくれる(設定さえすれば)
分からなこと、やりたいことを調べればWeb上に情報がいっぱい
9
注意点
ネットワークへの常時接続が必要
プログラムの使用制限が存在している
プログラムの連続起動時間が5分以内、スプレッドシートを作成する回数、とか。
https://docs.google.com/a/macros/esm.co.jp/dashboard
但し、ちょっとした困り事を解決するには、当面困らないでしょう。
10
利用シーン
11
GoogleAppsScriptで繋げて問題解決
12
営業管理
システム
稼働管理
システム
棚卸し
システム
販売管理
システム
販売管理
システム
回答集計
システム
Webサービス
デバイス
サードパーティ製
サービス
,etc
バーチャル秘書(Bot)
GoogleAppsScriptで繋げて問題解決
13
営業管理
システム
稼働管理
システム
棚卸し
システム
販売管理
システム
販売管理
システム
回答集計
システム
Webサービス
デバイス
サードパーティ製
サービス
,etc
バーチャル秘書(Bot)
こんな事繰り返しやってないですか?
定期的な注文書発行業務
14
GoogleAppsScriptで自動化できます
めんどくさいことはGoogleさんにやってもらいましょう
15
例えば、こんなことが手軽に!
16
共有カレンダーにタスクを一括登録
スプレッドシートに書き込まれた仕事内容を締切日に応じてカレンダーに予定登録する。
→締切の管理はシステムに!
17
差込印刷
メールテンプレートに宛名を変えて対象アドレスに送信する
書類テンプレートに値を挿入して書類作成する
→定型業務の案内や催促メール(その人だけに送りたい)、定型書類の自動作成
18
Excelからのデータ自動読込
定型フォーマットのExcelデータをGoogleにアップロードし、スプレッドシートに必要な値を抽出する
→集計作業の効率化
19
応用例
20
工場・倉庫からの棚卸システム運用をクラウドで手軽に実現
21
顧客資料の共有化と商談資料作成に関する
業務効率化(添付ファイルの最新版がわからない)
22
業務データの一元管理と効率化
23
デモンストレーション
・業務データの一元管理
・スマホからのデータ入力
24
ハンズオン開始
始めてのgoogle Apps Script
25
初めてのGoogle Apps Script(GAS)
copyFolder
フォーマット変換
26
最初に
スプレッドシートを作成してください。スプレッドシート名は「初めてのGAS」
以下のソースコードを閲覧下さい。
27
初めてのGAS
メニューからスクリプトエディタを選択して、スクリプト編集画面を開きます
28
無題のプロジェクトが開きます
29
初めてのGAS
1_start.gsのソースコードをコピペして下さい
30
初めてのGAS(スクリプトの実行)
Hello Worldを選択し実行ボタン(▶)をクリックすると、プログラムが実行されます。
プログラム実行の承認を行う。
スプレッドシートに戻ってもらい
Hello Worldと書かれたダイアログが表示されていれば成功です。
31
初めてのGAS(テキスト読込、テキスト書き出し)
同じように残りの2つの関数も実行しましょう。
A1セルに値を入れる。getValueFromSheetを実行するとスプレッドシートから値を取得してダイアログに表示します。
setValueIntoSheetはスプレッドシートにB1セルに指定した値を書き込みます。
32
始めてのGAS(メール送信)
スクリプトファイルを新規作成する
2_sendmail.gsのソースコードをコピーして下さい。
your_emailadressの部分をご自身のメールアドレスに書き換えてください。
先程と同様、send_mailの関数を選択して、実行します。
あなたのメールアドレスに「メールを送信しました」と書かれたメールが届けば成功です。
33
初めてのGAS(読み込み+メール送信)
スプレッドシートから読み込んだデータをメールで送ります。
シートを新規追加します。
コピー元のスプレッドシートを参考に日付とお仕事の内容を書いて下さい。
関数リストからsend_email_mytaskを選択して実行します。
「今日のお仕事」というメールが送られていれば成功です。
34
ハンズオン事前準備
35
以下のフォルダ/ファイルを開いてください
コピー元フォルダ
https://drive.google.com/drive/folders/0B6KpLfrWqmytYnBuYko4eTVUMFk
copyFolder
https://docs.google.com/spreadsheets/d/1vPMa-mcrJbGaICnNWtiQnAuzkYZGJeq0roYart7sqCg/edit?usp=sharing
36
コピー手順1 コピー先フォルダを作成する
ご自身のGoogleDrive内にフォルダを作成してください。
フォルダ名はフォーマット変換にしてください
フォルダのIDをコピーしてください
37
手順2 copyFolderからフォルダコピーする
38
①
コピー元フォルダIDをコピーしてください
②
コピーした定形作業一括登録フォルダーのIDをペーストしてください
③
ご自身のGoogleアカウントを入力してください
④
クリックしてください
手順3 コピーされたか確認する
フォーマット変換フォルダにコピーされたら完了です。
39
ハンズオン開始
フォーマット変換
40
お題の説明
単票形式のシートを別のフォーマットに変換するマクロがあります。
41
Google Apps Scriptの考え方(超ざっくり)
42
オブジェクトの位置づけ
(スプレッドシート)
43
Spreadsheetクラス
スプレッドシート全体の操作
-共有権限
-シートの取得、追加、削除
、など
Sheetクラス
シートの操作
-シート操作(行追加、列追加、ソート)
-範囲の取得
、など
Rangeクラス
範囲の操作
-値の読み書き
-範囲の装飾(枠線、フォント、色)
、など
SpradsheetApp
スプレッドシートオブジェクト
-スプレッドシートの取得
-スプレッドシートの作成
、など
オブジェクトの位置づけ
(フォルダー、ファイル)
44
Folderクラス
フォルダの操作
-共有権限の取得、操作
-フォルダ内フォルダの取得、追加、削除、作成
-フォルダ内ファイルの取得、追加、削除、作成
、など
Fileクラス
ファイルの操作
-共有権限の取得、操作
-ファイル情報の取得、操作
-ファイルのコピー
、など
DriveApp
フォルダ、ファイルオブジェクト
-フォルダ、ファイルの取得
-フォルダ、ファイルの作成(マイドライブ)
、など
メソッドの対応づけ
(OpenFile)
45
取込対象のファイルを取得
DriveAppクラス
getFolderByID()
Folderクラス
getFiles()
シートの取得と削除、コピー
Spreadsheetクラス
deleteSheet()
getSheetByName()
Sheetクラス
copyTo(Spreadsheet)
メソッドの対応づけ
(copyData)
46
値の読み書き
Sheetクラス
getRange()
Rangeクラス
getValue()
setValue()
メソッドの対応づけ
(reset)
47
シートの取得と削除、コピー
Spreadsheetクラス
getSheetByName()
deleteSheet(Sheet)
Sheetクラス
copyTo(Spreadsheet)
メソッドの対応づけ
(save)
48
シートから情報を読み取りファイル名を新規作成し
シートをコピー
SpreadsheetAppクラス
getActive()
Spreadsheetクラス
getsheetByName()
sheetクラス
getRange()
Rangeクラス
getValue()
SpreadsheetAppクラス
create(filename)
Sheetクラス
copyTo(spreadsheet)
Formの対応づけ
49
いくつか選択肢がある
・メニューバーからファンクションを起動 ← 今回はこれ
・図形にファンクションを起動
・sidebarからにファンクションを起動する
・スクリプトエディタから起動する
オプション:作成注文書一覧
(違った値の読み書き)
50
保存したファイル情報を一覧形式で書き込む
Fileクラス
getLastUpdated()
getName()
getOwner()
getURL()
SpreadsheetAppクラス
getSpreadsheetById()
Spreadsheetクラス
getSheetByName()
Sheetクラス
appendRow()
ハンズオン終わり
51
最後に
当たり前と思っていることの中に改善ポイントが存在しています。
例えば、以下の様なことが多い場合、改善ポイントが存在してる可能性が高いです。
Excelで配布したり、集計したりしている
印刷された紙を元に手入力している
突合せ作業が頻繁に行われている
52
ちょっとした工夫でGoogleに仕事をしてもらおう
今日、やってみたことを基に、仕事を楽にすることがないか、考えてみましょう。
単純作業の繰り返しは、GoogleAppsScriptにやってもらい、快適な業務環境を自分で作りましょう
もし、お悩みにがあれば、以下まで
http://www.esm.co.jp/corporate/contact.html
53