GoogleAppsScript入門 vol.2

GoogleAppsScript入門 vol.2

2020/09/15 19:00 TENNOSE オンライン登壇資料
https://www.facebook.com/events/308124120453861

1227d1df4826b4ca116719e1b3864bb0?s=128

Kazuya Takami

September 15, 2020
Tweet

Transcript

  1. GoogleAppsScript入門 - vol.4 by TENOSSE -

  2. 高見 和也(Takami Kazuya) https://twitter.com/miiitaka https://www.facebook.com/miiitaka { Company: “株式会社まなびと” }, {

    Role: “Front-End Developer 兼 代表取締役” } https://github.com/miiitaka
  3. 例題①:名簿からフォルダー作成

  4. 【Googleスプレッドシート】 名簿 名簿の名前ごと のフォルダーを 作成

  5. 処理の手順 ① Googleドライブに処理を実行するフォルダを作成(手作業) ② 名簿用のスプレッドシートを新規作成(手作業) ③ 実行するフォルダと名簿のIDを特定して取得(GAS) ④ 名簿情報を取得(GAS) ⑤

    名簿情報の名前でフォルダーを作成(GAS)
  6. 実演

  7. ① Googleドライブに処理を実行するフォルダを作成(手作業) ② 名簿用のスプレッドシートを新規作成(手作業)

  8. ③ 実行するフォルダと名簿のIDを特定して取得(GAS) URLのこの部分 (フォルダー) URLのこの部分 (スプレッドシート)

  9. DriveAppサービス

  10. <Driveサービス> クラス 提供サービス DriveApp グローバルオブジェクト Folder Googleドライブ内のフォルダを操作する機能を提供 FolderIterator Googleドライブ内のフォルダに反復処理をする機能を提供 File

    Googleドライブ内のファイルを操作する機能を提供 FileIterator Googleドライブ内のファイルに反復処理をする機能を提供 DriveApp Folder File 階層構造
  11. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID"); Logger.log(folder.getName()); let file

    = DriveApp.getFileById("ファイルのID"); Logger.log(file.getName()); } <フォルダーとファイルの情報を取得> https://developers.google.com/apps-script/reference/drive/drive-app ※DriveApp クラスリファレンス return Folder クラス return File クラス
  12. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID"); folder.createFolder("test"); let file

    = DriveApp.getFileById("ファイルのID"); Logger.log(file.getName()); } <Folderクラスで指定フォルダにフォルダ作成> 「test」フォルダーが できた ※Folder クラスリファレンス https://developers.google.com/apps-script/reference/drive/folder
  13. ④ 名簿情報を取得(GAS) A1:A4 の情報を取得 したい

  14. Spreadsheetサービス

  15. <Spreadsheetサービス> クラス 提供サービス SpreadsheetApp グローバルオブジェクト Spreadsheet スプレッドシートを操作する機能を提供 Sheet シートを操作する機能を提供 Range

    セル範囲を操作する機能を提供 SpreadsheetApp Spreadsheet Sheet 階層構造 Range
  16. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID "); //folder.createFolder("test"); let

    file = DriveApp.getFileById("ファイルのID "); Logger.log(file.getName()); let spreadsheet = SpreadsheetApp.openById("ファイルのID "); Logger.log(spreadsheet.getName()); } <スプレッドシートの情報を取得> Fileと同じID指定だが スプレッドシートの オブジェクトとして 取得 ※SpreadsheetApp クラスリファレンス https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app
  17. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID "); let spreadsheet

    = SpreadsheetApp.openById("ファイルのID "); let sheet = spreadsheet.getSheetByName("シート1"); Logger.log(sheet.getName()); } <シートの情報を取得> スプレッドシートの シート名を指定 ※spreadsheet クラスリファレンス https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
  18. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID "); let spreadsheet

    = SpreadsheetApp.openById("ファイルのID "); let sheet = spreadsheet.getSheetByName("シート1"); let range = sheet.getDataRange(); Logger.log(range.getLastRow()); } <名簿データを取得> シート内のデータ範 囲(A1:A4)を自動判 定して取得 ※range クラスリファレンス データ範囲(A1:A4) の最終行(4)を取得 https://developers.google.com/apps-script/reference/spreadsheet/range
  19. function myFunction() { let folder = DriveApp.getFolderById("フォルダーのID "); let spreadsheet

    = SpreadsheetApp.openById("ファイルのID "); let sheet = spreadsheet.getSheetByName("シート1"); let range = sheet.getDataRange(); let data = range.getValues(); for (let i = 1; i < range.getLastRow(); i++) { folder.createFolder(data[i][0]); } } <名簿データを元にフォルダを作成> データ範囲(A1:A4) を配列として取得 配列の値(行,列)を 元にフォルダ作成
  20. できてる!

  21. 例題②:GASからカレンダー予約

  22. 【Googleスプレッドシート】 カレンダー予約情報を入力 予約が自動で行 われる

  23. 実演

  24. 処理の手順 ① Googleドライブに処理を実行するフォルダを作成(手作業) ② カレンダー予約のスプレッドシートを新規作成(手作業) ③ スプレッドシートとカレンダーのIDを特定して取得(GAS) ④ カレンダー予約情報を取得(GAS) ⑤

    カレンダー予約情報を元にカレンダー予約設定(GAS)
  25. 処理の手順 ① Googleドライブに処理を実行するフォルダを作成(手作業) ② カレンダー予約のスプレッドシートを新規作成(手作業) ③ スプレッドシートとカレンダーのIDを特定して取得(GAS) ④ カレンダー予約情報を取得(GAS) ⑤

    カレンダー予約情報を元にカレンダー予約設定(GAS) ①~④までは例 題①とほぼ同じ
  26. Calendarサービス

  27. <Calendarサービス> クラス 提供サービス CalendarApp グローバルオブジェクト Calendar カレンダーを操作する機能を提供 CalendarEvent カレンダーのイベントを操作する機能を提供 CalendarApp

    Calendar CalendarEvent 階層構造
  28. ① Googleドライブに処理を実行するフォルダを作成(手作業) ② カレンダー予約のスプレッドシートを新規作成(手作業)

  29. ③ スプレッドシートとカレンダーのIDを特定して取得(GAS) この部分 ※スプレッドシートのID取得は例題①参照

  30. function myFunction() { let calendar = CalendarApp.getCalendarById("カレンダーID"); Logger.log(calendar.getName()); let spreadsheet

    = SpreadsheetApp.openById("ファイルのID "); Logger.log(spreadsheet.getName()); } <カレンダーとスプレッドシートの情報を取得> カレンダーオブジェ クトを取得 ※CalendarApp クラスリファレンス https://developers.google.com/apps-script/reference/calendar/calendar-app
  31. function myFunction() { let calendar = CalendarApp.getCalendarById("カレンダーID"); let spreadsheet =

    SpreadsheetApp.openById("ファイルのID "); let sheet = spreadsheet.getSheetByName("シート1"); let range = sheet.getDataRange(); let data = range.getValues(); for (let i = 1; i < range.getLastRow(); i++) { calendar.createEvent(data[i][0], new Date(data[i][1]), new Date(data[i][2])); } } <カレンダーの生成> カレンダーオブジェ クトを取得 ※CalendarApp クラスリファレンス https://developers.google.com/apps-script/reference/calendar/calendar-app
  32. できてる!

  33. <CalendarEventのオプション> オプション 提供サービス description イベントの説明 location イベントの場所 guests ゲスト(メールアドレス/カンマ区切り) sendInvites

    招待メール送信(default: false)
  34. function myFunction() { ※省略 calendar.createEvent("テストイベント", new Date("2020/11/19 18:00"), new Date("2020/11/19

    19:00"), { description: "このイベントはたくさん人がくるよ", location: "〒880-0805 宮崎県宮崎市橘通東3丁目6番34号クロノビル2F", guests: "info@manabito.biz", sendInvites: true } ); } <カレンダーのオプション設定> カレンダーオブジェ クトを取得
  35. できてる!

  36. 例題③:カスタム関数

  37. 自分でスプレッドシート用の 関数を作ってみましょう。 ▪関数名 SALE ▪関数の説明 渡された金額に値引き率を引いた金額を返すカスタム関数 ▪引数 セール前の値段 型:Number ▪戻り値

    セール時の値段 型:Number
  38. function SALE(price) { var sale_rate = 0.2; return price *

    (1 - sale_rate); } <SALE関数の作成> 割引後の値段を return
  39. 使える!

  40. /** * 渡された金額に値引き率を引いた金額を返すカスタム関数 * * @param {Number} 金額 * @return

    {Number} 値引き後金額 * @customfunction */ function SALE(price) { var sale_rate = 0.2; return price * (1 - sale_rate); } <SALE関数の作成> コードヒントが出るよ うに設定しましょう。
  41. 関数の詳細でた!

  42. ご清聴ありがとうございました。