【GAS】毎日自動でスプレッドシートの最終行にデータを入力する

laptop プログラミング

Google Apps Script(GAS)を使って、毎日自動でスプレッドシートの最終行にデータを入力する方法を紹介します。

GASは、Googleが提供するサービスの1つで、JavaScriptベースのスクリプト言語です。Googleアカウントを持っていれば無料で使えます。

GASを使えば、スプレッドシートやGmailをはじめ、ほかのGoogleのサービスと簡単に連携することができます。

スプレッドシートにデータ入力するためのスクリプトを作る

GASには、2つの作り方があります。「Container Bound Script」と「Standalone Script」です。

  1. Container Bound Script:スプレッドシートなどのファイルに紐づいて存在
  2. Standalone Script:単独で存在

「Container Bound Scrip」の方がスプレッドシートと連携するのが簡単なので、今回は「Container Bound Scrip」で作ります。

作り方は、スプレッドシートを開き、「ツール」→「スクリプトエディタ」をクリックするだけです。

create-script

スクリプトエディタが開くので、ここにスクリプトを書いていきます。

これで、このスプレッドシートに紐づく「Container Bound Script」ができました。

スプレッドシートの最終行を取得する

スプレッドシートは、A列に日付、B列に内容を入力していきます。

下図のようにスプレッドシートの1行目にタイトルを入力しておきます。

spreadsheet

スクリプトエディタに次のスクリプトを書いて「実行」をクリックします。

const setDataLastRow = () => {
  //シートを指定
  const sheet = SpreadsheetApp.getActiveSheet();
  //最終行を取得
  const lastRow = sheet.getLastRow();
 //ログの表示
  console.log(`最終行は${lastRow}`);
};

初めて実行する場合には承認が必要になるので、次の方法で許可します。

承認方法
  1. 「承認が必要です」というウインドウで、「権限を確認」をクリック。
  2. Googleアカウントでログイン。
  3. 「このアプリはGoogleで確認されていません」の左下の「詳細」をクリック。
  4. 「~~~(安全ではないページ)に移動」をクリック→「許可」。

スプレッドシートは、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セルに「入力される内容」が入力されます。

spreadsheet2

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にはトリガーという機能があり、これを使えば特定の時間にスクリプトを自動で実行できます。

トリガーを使うには、スクリプトエディタで「トリガーを追加」をクリックし、実行する関数を指定します。

event-line-10
set-trigger

追加したトリガーは、setDataLastRow関数を毎日午前0時~1時に実行します。

これで、毎日自動でスプレッドシートにデータを入力することができます。

まとめ

GASを使えば、スプレッドシートに決まったデータをスクリプトから入力することができます。

それを毎日自動で実行するにはトリガーを使います。

入力するデータの内容は、GASのスクリプトを変更すれば様々なデータを入力させることができます。

トリガーの実行条件を変更すれば、毎月や曜日を指定して関数を実行させることができるので、アイデア次第でいろいろできますね。

タイトルとURLをコピーしました