こんにちは、これでアドカレ投稿5回目になり、日々頑張ってるmu-sukeです。
この記事は株式会社Diverse Advent Calendar2021 、24日目の記事です。
これはなに?
お、これ効率化できるなって思ったらよくGASで効率化をしている筆者ですが、かなり使ってきたなと思ったので個人的に使う頻度が高いものをピックアップして紹介します。
業務効率化したいよって人にとってすぐ使えるよう、コピペで使えるということを意識したので参考にしていただけたら幸いです。
この記事のゴール
以下の理解を得ることをゴールとします。
- GAS(Google Apps Script)を触ったことがない人でもコピペして使えるようになること
GASって何?
Googleが開発したスクリプトで、Googleが提供しているサービスの情報にアクセスしやすいものです。
今回はコピペで使えるTipsというテーマなので、GASの説明はこのくらいにします。
こちらの記事が分かりやすかったので、読むとより理解が深まるかと思います。
Google Apps Script(GAS)とは?できることから始め方までの基本|アナグラム株式会社
①スプレッドシートの情報にアクセスしたい
筆者がGASを使う際に多いのが、外部から得てきた情報をそのままスプレッドシートに保存するというものです。
スプレッドシートから取得したい
シートへのアクセス
const spreadsheet = SpreadsheetApp.openById('---ここにIDを記載する---');
const sheet = spreadsheet.getSheetByName('---ここにシート名を記載する---');
まずはスプレッドシートへのアクセス部分です。
IDでアクセスするファイルを決定、
シート名で実際に取得したいシートを決定します。
特定のセルを取得したい場合
// A1セルを取得
const A1 = sheet.getRange(1, 1).getValues()
// B4セルを取得
const B4 = sheet.getRange(4, 2).getValues()
特定の行を1行取得したい場合
// 1行目を取得
const lastRowPosition = sheet.getLastColumn()
const rowA = sheet.getRange(1, 1, 1, lastRowPosition).getValues()
// 4行目を取得
const lastRowPosition = sheet.getLastColumn()
const rowA = sheet.getRange(4, 1, 1, lastRowPosition).getValues()
特定の範囲を取得したい場合
// A1からC3までを取得
const data = sheet.getRange(1, 1, 2, 3).getValues()
スプレッドシートに保存したい
シートへのアクセス
const spreadsheet = SpreadsheetApp.openById('---ここにIDを記載する---');
const sheet = spreadsheet.getSheetByName('---ここにシート名を記載する---');
こちらも上で書いた方法と同じになります。
特定のセルに保存したい場合
// A10に保存
const data = '保存したい文字列'
sheet.getRange(10, 1).setValue(data)
②毎日指定した時間に実行してほしい
GASは作成した関数を定期的に実行してくれるスケジューラとしての機能も備えています。
これをやることで、例えば定期的に外部のAPIを叩いてスプレッドシートに保存するなどができるようになります。
- トリガーを選択
- 画面右下の
トリガーを追加
を選択 - トリガータイプを
時間ベースのタイマー
に設定 - 時間の間隔を任意の値にする
- 保存
補足画像
手順1-2 | 手順3-5 |
---|---|
③秘匿すべき情報を管理したい
外部との通信をする際に必ず必要になってくるトークンやAPIキーなどはコード上に書くべきありません。
AWS(Amazon Web Service)やGCP(Google Cloud Platform)だったらシークレットマネージャーで保存する方法があります。
GASでも同様(厳密には違いますが)のものがありプロパティストアと呼ばれています。
プロパティストアに保存したい時
PropertiesService.getScriptProperties().setProperty("key","value");
プロパティストアから呼び出したい時
const value = PropertiesService.getScriptProperties().getProperty("key");
余談
今回紹介したものだけでなく、他にもGmailの情報を取得することや、Google Driveに保存する方法など、さまざまなことができるので是非試してみてください。
ではまた!