Google Apps Scriptを使ってGoogleスプレッドシートのマクロ実行


エクセルのマクロは今まで使ったことがあったのですが、Googleスプレッドシートで同じような動作をしたいという要望があったので、Google Apps Scriptを使ってみました。

何がしたかったかというと、別のスプレッドシート内容の一部をコピーするという動作です。
そんなに難しくない動作です。

Google Apps Scriptを使えるようにする

Google Apps Scriptというのは、Googleスプレッドシートのみでなくいろんなツールと連携できる便利なもので、javascript言語です。
なので、web制作している人にはとっつきやすいかと思います。
実際に触ってみて、エクセルのマクロに書き方が似ているなと思う部分もありました。

まずは、Google Apps Scriptを使えるようにします。
マイドライブの「新規」-「その他」-「アプリの追加」をクリックします。

「Google Apps Script」をクリックします。

「+接続」をクリックします。※キャプチャ取り忘れました。

接続済みになったので「OK」をクリックします。

そうすると、「Google Apps Script」が使用できるようになります。
マイドライブの「新規」-「その他」-「Google Apps Script」が追加されたのがわかります。

Googleスプレッドシートからマクロを記述

動かしたいGoogleスプレッドシート上で「ツール」-「スクリプトエディタ」をクリックします。

そうするとGoogle Apps Scriptが起動するので、任意のプロジェクトとファイル名をつけます。

処理内容を書いて[Ctrl+s]で保存します。

書いた内容は下記です。

function copyCell() {
  // 入力画面作成
  var target=Browser.inputBox("対象月入力画面","対象月をYYYY/MM形式で入力してください",Browser.Buttons.OK_CANCEL);
  // 現在のスプレッドシートを取得
  var ss_copyTo = SpreadsheetApp.getActiveSpreadsheet();
  // 現在のシートを取得
  var sheet_copyTo = ss_copyTo.getActiveSheet();
  // コピー元のスプレッドシートを取得
  var ss_copyFrom = SpreadsheetApp.openById('スプレッドシートIDを明記');
  // コピー元のシートを取得
  var sheet_copyFrom = ss_copyFrom.getSheetByName('schedule');
  // 繰り返し i:コピー元の行カウント  j:コピー先の行カウント
  var j = 2;
  var lastRow = sheet_copyFrom.getLastRow();
  for(var i = 2; i <= lastRow; i++) {
    var matchText = sheet_copyFrom.getRange(i, 3).getValue();
    if(matchText) {
      // 日付の形式を変更
      var textFormat = Utilities.formatDate(matchText, "JST", "yyyy/MM/dd (E) HH:mm:ss Z");
      // 入力した日付と合致する作業終了予定の行のみコピー
      if(textFormat.indexOf(target) != -1){ 
         sheet_copyTo.getRange(j, 1).setValue(sheet_copyFrom.getRange(i, 1).getValue());
         sheet_copyTo.getRange(j, 2).setValue(sheet_copyFrom.getRange(i, 4).getValue());
         j++;
      }
    }
  }
}

スプレッドシートIDを明記と書いてあるところには、ご自身のコピー元スプレッドIDを明記してください。
スプレッドIDはスプレッドシードを開いたときのURLの下記部分になります。
https://docs.google.com/spreadsheets/d/スプレッドID/edit

シート名はスプレッドシート株のシート名を記述してください。

getRange(行番号, 列番号)となるので、適宜コピーしたいセル番号に変えるだけでOKです。

「ツール」-「マクロ」-「インポート」をクリックしてマクロ処理をインポートします。

「関数を追加」をクリックします。

「ツール」-「マクロ」-「copyCell」をクリックするとマクロ実行できます。

Google Apps Script(GAS)でできることが多そうなので、今後使い倒せるようになったら仕事が楽になりそうです。 

スポンサーリンク
ad
ad

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad