Google Apps Script(GAS)を使って、毎日自動でスプレッドシートの最終行にデータを入力する方法を紹介します。
GASは、Googleが提供するサービスの1つで、JavaScriptベースのスクリプト言語です。Googleアカウントを持っていれば無料で使えます。
GASを使えば、スプレッドシートやGmailをはじめ、ほかのGoogleのサービスと簡単に連携することができます。
スプレッドシートにデータ入力するためのスクリプトを作る
GASには、2つの作り方があります。「Container Bound Script」と「Standalone Script」です。
- Container Bound Script:スプレッドシートなどのファイルに紐づいて存在
- Standalone Script:単独で存在
「Container Bound Scrip」の方がスプレッドシートと連携するのが簡単なので、今回は「Container Bound Scrip」で作ります。
作り方は、スプレッドシートを開き、「ツール」→「スクリプトエディタ」をクリックするだけです。
スクリプトエディタが開くので、ここにスクリプトを書いていきます。
これで、このスプレッドシートに紐づく「Container Bound Script」ができました。
スプレッドシートの最終行を取得する
スプレッドシートは、A列に日付、B列に内容を入力していきます。
下図のようにスプレッドシートの1行目にタイトルを入力しておきます。
スクリプトエディタに次のスクリプトを書いて「実行」をクリックします。
const setDataLastRow = () => {
//シートを指定
const sheet = SpreadsheetApp.getActiveSheet();
//最終行を取得
const lastRow = sheet.getLastRow();
//ログの表示
console.log(`最終行は${lastRow}`);
};
初めて実行する場合には承認が必要になるので、次の方法で許可します。
スプレッドシートは、1行目にタイトルを入力しているだけなので、実行ログには「最終行は1」と表示されるはずです。
GASには、最終行を取得するgetLastRow()メソッドが用意されているので、このメソッドを使うと最終行が簡単に取得できます。
最終行にデータを入力する
最終行が取得できたので、データを入力します。
先ほどのスクリプトを以下のように変更してください。
const setDataLastRow = () => {
//シートを指定
const sheet = SpreadsheetApp.getActiveSheet();
//最終行を取得
const lastRow = sheet.getLastRow();
//今日の日付
const today = new Date();
//入力する内容
const contents = "入力される内容";
//スプレッドシートに入力するデータ
const inputData = [today, contents];
//入力する行
const inputCell = sheet.getRange(lastRow + 1, 1, 1, inputData.length);
//データの入力
inputCell.setValues([inputData]);
};
実行すると、スプレッドシートのA2セルに今日の日付、B2セルに「入力される内容」が入力されます。
GASでスプレッドシートへの入力は、入力するセルの範囲を指定してsetValues()メソッドを使います。
入力するセルの範囲はgetRange()メソッドで指定します。
getRange(row, column, numRows, numColumns)
- row:入力を始める行
- column:入力を始める列
- numRows:選択する行数
- numColumns:選択する列数
今回のスクリプトでは、15行目でセルの範囲を指定しています。
15行目:const inputCell = sheet.getRange(lastRow + 1, 1, 1, inputData.length);
- row:最終行の1列下に入力するため「lastRow + 1」
- column:A列から入力を始めるので「1」(B列から始めたい場合は「2」にします)
- numRows:データは1行分の入力なので「1」
- numColumns:今回の入力データは2つなので「2」でもいいのですが、配列の数を取得(inputData.length)して指定しています。
今回の入力データは1次元配列で宣言しているので、17行目のデータ入力のときに2次元配列としてsetValues()に渡しています。
setValues()メソッドは、2次元配列でデータを渡す必要があるので注意が必要です。
スクリプトを自動で実行させる
スプレッドシートにデータを入力するスクリプトは完成しました。
このスクリプトを実行すればデータが入力されますが、毎日手動で実行するのは大変ですね。
GASにはトリガーという機能があり、これを使えば特定の時間にスクリプトを自動で実行できます。
トリガーを使うには、スクリプトエディタで「トリガーを追加」をクリックし、実行する関数を指定します。
追加したトリガーは、setDataLastRow関数を毎日午前0時~1時に実行します。
これで、毎日自動でスプレッドシートにデータを入力することができます。
まとめ
GASを使えば、スプレッドシートに決まったデータをスクリプトから入力することができます。
それを毎日自動で実行するにはトリガーを使います。
入力するデータの内容は、GASのスクリプトを変更すれば様々なデータを入力させることができます。
トリガーの実行条件を変更すれば、毎月や曜日を指定して関数を実行させることができるので、アイデア次第でいろいろできますね。