7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ateam Brides Inc.Advent Calendar 2019

Day 10

たった20行のコードでスプレッドシートをコピーするメニューを追加する

Last updated at Posted at 2019-12-09

この記事はAteam Brides Inc. Advent Calendar 2019 11日目の記事です。

完成図

copy.gif

はじめに

スプレッドシートを、定例の議事録として使うことがあるかと思います。
(表計算アプリの使い方じゃない!という点は、今回多めに見てください><)

その際にテンプレシートをコピーして、今日の日付にして…と、毎回繰り返していると手間に感じることも多いはずです。
メニューにテンプレコピーボタンを用意し、簡単に今日の日付のシートをコピーする機能を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つ左の三角を押すと実行できます。
初回は承認ダイアログが出るので、

4.png

Googleアカウント選択画面で自分のアカウントを選んだ後、もし以下のようなウィンドウが出た場合は
詳細→xxxxx(安全ではないページ)に移動→テキストボックスに「次へ」と入力→許可 で許可されます。
5.png

※自己責任でお願いします。

最終確認

スプレッドシートを再読込します。
メニュー一番右に「テンプレート」というメニューが追加されているので選びます。

copy.gif

無事に、今日の日付でシートがコピーされているはずです。
ちなみに間違えてテンプレシートを消したり名前変更してしまった場合にダイアログを出したり、既に今日分のシートがある場合にダイアログを出す処理も実装されています。

ちなみにテンプレ以外にもう1シート以上ある場合は、テンプレシートを非表示にすることも可能です。すると日々テンプレシートがシート一覧に出なくなるのでスッキリします。

私たちのチームで働きませんか?

alt
エイチームは、インターネットを使った多様な技術を駆使し、幅広いビジネスの領域に挑戦し続ける名古屋の総合IT企業です。
そのグループ会社である株式会社エイチームブライズでは、一緒に働く仲間を募集しています!

上記求人をご覧いただき、少しでも興味を持っていただけた方は、まずはチャットでざっくばらんに話をしましょう。
技術的な話だけでなく、私たちが大切にしていることや、お任せしたいお仕事についてなどを詳しくお伝えいたします!

Qiita Jobsよりメッセージお待ちしております!

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?