非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Googleスプレッドシートマクロはパソコン閉じても動作してくれるので便利!

   

GoogleスプレッドシートのマクロはGoogle Apps Scriptで書きますが、サーバー上で動いているソフトのため、パソコンが閉じた状態でも(スプレッドシートを閉じた状態でも)マクロはサーバー上で動いてくれます。

具体的にはスクリプトをタイマーを使って一定間隔に起動するわけですが、Excelの場合だとあくまでExcelが立ち上がった状態でしか動作しません。一方でGoogleスプレッドシートはブラウザを閉じてもパソコンをシャットダウンしても動き続けます。実体がサーバー側にある故の成せる業ですね。

[ad#top-1]

今回作るマクロの流れ

こんな感じのマクロを作ります。

  1. 2時間おきに日時をセルに入力
  2. 入力はA3セルから始まって順次次のセル(2回目はA4セル、3回目はA5セル4・・・)に書き込んでいく。
  3. A2セルに次の書き込む行番号を表記しておく。(その数値をGETすることで書き込むべき行番号を得る)
  4. パソコンは電源OFFにしておいて数時間後に確認する。

 

Googleスプレッドシートの用意

まずはGoogleスプレッドシートを開いて、セルA2に「=COUNTA(A3:A100)+3」と数式を入れました。これで時刻を書き込むセルの行番号が得られます。

 

Google Apps Scriptの用意

スプレッドシートのメニューから「ツール」ー「スクリプト エディタ」を選択すると、Google Apps Scriptエディタが開きます。

 

Google Apps Scriptエディタにコードを書き込みます。あくまで現在日時を入力するだけの単純なプログラムです。普通に実行すれば1回だけ日時が入力されるだけです。

function myFunction() {
    var mySheet = SpreadsheetApp.getActiveSheet();
    //セルA2の値を得る。これが入力すべき行番号になる。
    var r = mySheet.getRange("A2").getValue();
    //現在日時を生成
    var dt = new Date();
    dtStr = dt.getFullYear() +"/"+ (dt.getMonth()+1) +"/"+ dt.getDate() +" "+ dt.getHours() +":"+dt.getMinutes()
    //セルに数値を入力する。
    mySheet.getRange("A"+r).setValue(dtStr);
}
 

 

タイマー設定

次にパソコンOFF状態でも起動し続けてくれる設定(タイマー設定)を行います。Google Apps Scriptにはこれがあるから便利なのです。

Google Apps Scriptエディタのツールバーにある時計ボタンをクリックします。

 

タイマー設定をします。今回は2時間ごとにmyFunction関数を実行するよう設定しました。

 

これでGoogle Apps Scriptエディタを保存し、Googleスプレッドシートとともに閉じます。(パソコンの電源もOFFでOK)

 

結果

朝6:30頃に放ったらかしにして、21時頃覗いてみると、以下の通り2時間おきに日時が入力されていました。成功です。

 

「パソコンを閉じても動き続けるマクロ」というのはとても便利で、例えば為替や株価を一定時間の間隔で取得して記録する、といったことに利用できます。スプレッドシートなのでグラフも簡単に作れますしね。

[ad#ad-1]

スポンサーリンク

 - Google Apps Script