この記事はAteam Brides Inc. Advent Calendar 2019 11日目の記事です。
完成図
はじめに
スプレッドシートを、定例の議事録として使うことがあるかと思います。
(表計算アプリの使い方じゃない!という点は、今回多めに見てください><)
その際にテンプレシートをコピーして、今日の日付にして…と、毎回繰り返していると手間に感じることも多いはずです。
メニューにテンプレコピーボタンを用意し、簡単に今日の日付のシートをコピーする機能をGoogle Apps Scriptで20行で実装します。
スプレッドシートの準備
GoogleDriveからスプレッドシートを新規作成します。
もしくは既存のものでも構いません。
「テンプレ」というシートを用意し、適当に文字を打ち込みます。
次にメニューのツール→スクリプトエディタを開きます。
おもむろに以下コードを貼り付けて保存します。
コード
function onOpen() {
SpreadsheetApp.getActiveSpreadsheet().addMenu('テンプレート', [{name: 'シートのコピーを作成', functionName: 'copySheet'}]);
}
function copySheet() {
var templateFileName = "テンプレ";
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd');
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = spreadSheet.getSheetByName(templateFileName);
var distSheet = spreadSheet.getSheetByName(today);
if (!templateSheet) { // テンプレシートの名前が変えられたり削除された場合のエラー
Browser.msgBox(templateFileName + "という名前のシートがありません。");
} else if (distSheet) { // 既にファイル生成済み
Browser.msgBox("既に今日の日付のシートが存在するため、コピーできません。");
} else { // 新シート追加
distSheet = templateSheet.copyTo(spreadSheet).setName(today);
spreadSheet.setActiveSheet(distSheet);
}
}
権限ダイアログを承認
スプレッドシートにアクセスする権限を承認する必要があります。
「関数を選択」メニューからonOpenを選び、2つ左の三角を押すと実行できます。
初回は承認ダイアログが出るので、
Googleアカウント選択画面で自分のアカウントを選んだ後、もし以下のようなウィンドウが出た場合は
詳細→xxxxx(安全ではないページ)に移動→テキストボックスに「次へ」と入力→許可 で許可されます。
※自己責任でお願いします。
最終確認
スプレッドシートを再読込します。
メニュー一番右に「テンプレート」というメニューが追加されているので選びます。
無事に、今日の日付でシートがコピーされているはずです。
ちなみに間違えてテンプレシートを消したり名前変更してしまった場合にダイアログを出したり、既に今日分のシートがある場合にダイアログを出す処理も実装されています。
ちなみにテンプレ以外にもう1シート以上ある場合は、テンプレシートを非表示にすることも可能です。すると日々テンプレシートがシート一覧に出なくなるのでスッキリします。
私たちのチームで働きませんか?
エイチームは、インターネットを使った多様な技術を駆使し、幅広いビジネスの領域に挑戦し続ける名古屋の総合IT企業です。
そのグループ会社である株式会社エイチームブライズでは、一緒に働く仲間を募集しています!
上記求人をご覧いただき、少しでも興味を持っていただけた方は、まずはチャットでざっくばらんに話をしましょう。
技術的な話だけでなく、私たちが大切にしていることや、お任せしたいお仕事についてなどを詳しくお伝えいたします!
Qiita Jobsよりメッセージお待ちしております!