(最終更新月:2023年4月)
✔当記事はこのような方に向けて書かれています
「GASでスプレッドシートを扱う方法について知りたい」
「そもそもGASで何ができるのだろうか?」
「GASスプレッドシートを扱う具体例を教えてほしい」
✔当記事の主な内容は以下のとおり
- GASでスプレッドシートを扱うための基礎知識
- GASでスプレッドシートを扱う方法
- GASでスプレッドシートを扱ってできること
当記事では、GASでスプレッドシートを扱うことについての基本はもちろん、実際のコードやその使用例など、初心者にもわかりやすいよう解説しています。
ぜひ最後までご覧ください。
GASでスプレッドシートを扱うための前提知識
GASでスプレッドシートを扱うための前提知識を見ていきましょう。
簡単に目を通し、わからないことがないかを確認してください。
- GASとは?
- スプレッドシートデータの取得が役立つシーン
GoogleスプレッドシートとChatGPTで開発したアプリ
GASとは?
Google Apps Script(GAS)は、Googleのクラウド上で動作するスクリプト言語。
GASを使うことで、GoogleスプレッドシートやGoogleドキュメントなどのG Suiteアプリケーションを自動化・拡張できるようになります。
スプレッドシートデータの取得が役立つシーン
スプレッドシートデータの取得は、業務効率化やデータ分析に役立ちます。
例えば当記事で書かれていることを覚えると以下のようなことができるようになります。
- 在庫管理や営業データの集計
- 複数シートの情報をまとめる
- 定期的にデータを更新する
- メールやドキュメントなどのログをとる
GASでのスプレッドシートデータ取得の基本
GASでスプレッドシートデータを取得する基本について見ていきます。
具体例を見る前に、最低限の知識を身につけましょう。
- GoogleスプレッドシートとGASの連携方法
- スプレッドシートのID取得方法
- スプレッドシートオブジェクトの取得方法
GoogleスプレッドシートとGASの連携方法
Googleスプレッドシートを開き、上部メニューから「拡張機能」>「Apps Script」をクリックして、GASエディタを開きます。
これで、スプレッドシートとGASを連携できます。
スプレッドシートのID取得方法
スプレッドシートのURLからIDを取得します。
URLは次の形式です。
https://docs.google.com/spreadsheets/d/スプレッドシートID/edit。
スプレッドシートIDは、/d/ と /edit の間にある文字列です。
スプレッドシートオブジェクトの取得方法
GASでスプレッドシートオブジェクトを取得するには、以下のコードを使用します。
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
連携している場合には、IDによる取得ではなく、アクティブシートとしてもオブジェクト化が可能です。
const ss = SpreadsheetApp.getActiveSpreadsheet();
スプレッドシートからデータを読み込む
スプレッドシートからデータを読み込みましょう。
方法は以下のとおり。
- シートの選択方法
- セルや範囲のデータ取得方法
- データを取得するコード例
シートの選択方法
シートを選択するには、以下のコードを使用します。
var sheet = spreadsheet.getSheetByName("シート名");
セルや範囲のデータ取得方法
セルのデータを取得するには、以下のコードを使用します。
var cellValue = sheet.getRange("A1").getValue();
範囲のデータを取得するには、以下のコードを使用します。
var rangeValues = sheet.getRange("A1:C3").getValues();
データを取得するコード例
以下は、スプレッドシートのデータを取得し、ログに表示するコード例です。
function readData() {
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var sheet = spreadsheet.getSheetByName("シート名");
var cellValue = sheet.getRange("A1").getValue();
var rangeValues = sheet.getRange("A1:C3").getValues();
Logger.log("セル A1 の値: " + cellValue);
Logger.log("範囲 A1:C3 の値:");
for (var i = 0; i < rangeValues.length; i++) {
Logger.log(rangeValues[i]);
}
}
Logger.logは、Apps Scriptのコンソール上でメッセージなどを表示できるクラス・メソッドです。
スプレッドシートへデータを書き込む
スプレッドシートにデータを書き込む方法をご紹介します。
- セルや範囲にデータを書き込む方法
- データを書き込むコード例
セルや範囲にデータを書き込む方法
セルにデータを書き込むには、以下のコードを使用します。
sheet.getRange("A1").setValue("新しい値");
値を取得する時は、セル.getValue()
値を書き込む時は、セル.setValue()
範囲にデータを書き込むには、以下のコードを使用します。
var data = [
["値1", "値2", "値3"],
["値4", "値5", "値6"]
];
sheet.getRange("A1:C2").setValues(data);
データを書き込むコード例
以下は、スプレッドシートにデータを書き込むコード例です。
function writeData() {
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var sheet = spreadsheet.getSheetByName("シート名");
sheet.getRange("A1").setValue("新しい値");
var data = [
["値1", "値2", "値3"],
["値4", "値5", "値6"]
];
sheet.getRange("A2:C3").setValues(data);
}
スプレッドシートデータ取得の応用例
スプレッドシートのデータを扱ううえで、応用した使い方も紹介します。
これまでの内容が理解できていれば、問題なく理解できるでしょう。
- 複数シートのデータをまとめる
- データのフィルタリングやソート
- スプレッドシートを利用した自動化
例1:複数シートのデータをまとめる
以下のコードは、複数のシートからデータを取得し、新しいシートにまとめる例です。
function mergeSheets() {
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var sheet1 = spreadsheet.getSheetByName("シート1");
var sheet2 = spreadsheet.getSheetByName("シート2");
var data1 = sheet1.getDataRange().getValues();
var data2 = sheet2.getDataRange().getValues();
var mergedData = data1.concat(data2);
var newSheet = spreadsheet.insertSheet("まとめシート");
newSheet.getRange(1, 1, mergedData.length, mergedData[0].length).setValues(mergedData);
}
使っているメソッドは、getValuesやsetValuesで変わりません。
例2:データのフィルタリングやソート
以下のコードは、スプレッドシートのデータをフィルタリングしてソートする例です。
ソートやフィルタリングをおこないたい方は参考にしてください。
function filterAndSort() {
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var sheet = spreadsheet.getSheetByName("シート名");
var data = sheet.getDataRange().getValues();
// ヘッダー行を取り除く
var header = data.shift();
// 条件に合うデータをフィルタリング
var filteredData = data.filter(function (row) {
return row[0] === "条件";
});
// 第二列でソート
filteredData.sort(function (a, b) {
return a[1] - b[1];
});
// ヘッダー行を戻す
filteredData.unshift(header);
// フィルタリング・ソートしたデータを別のシートに出力
var outputSheet = spreadsheet.insertSheet("フィルタリング・ソート結果");
outputSheet.getRange(1, 1, filteredData.length,
filteredData[0].length).setValues(filteredData);
}
例3:スプレッドシートを利用した自動化
以下のコードは、スプレッドシートのデータを定期的に更新する例です。
GASのトリガー機能を使って、このコードを定期実行することができます。
function updateData() {
var spreadsheet = SpreadsheetApp.openById("スプレッドシートID");
var sheet = spreadsheet.getSheetByName("シート名");
var data = fetchDataFromExternalSource(); // 外部ソースからデータを取得する関数
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}
トリガーは以下のように時間などにより設定が可能です。
よくある質問と回答
GASでスプレッドシートを取り扱う際のよくある質問について回答していきます。
先に目を通しておくことで、トラブルの解決が早くなるでしょう。
- スプレッドシートデータ取得でエラーが発生する場合の対処法
- スプレッドシートのデータを安全に保つ方法
- GASの使い方でよくある誤解やトラブル
スプレッドシートデータ取得でエラーが発生する場合の対処法
エラーが発生する場合は、まずエラーメッセージを確認し、問題の原因を特定しましょう。
スプレッドシートIDやシート名が正しいか、範囲が適切かなど、コードやデータの内容をチェックしてください。
また、GASの公式ドキュメントやフォーラムを参考にして、解決策を探すのも有効です。
スプレッドシートのデータを安全に保つ方法
スプレッドシートのデータを安全に保つためには、以下の対策を取ることがおすすめです。
- アクセス権限の設定: スプレッドシートの共有設定を確認し、必要なユーザーだけがアクセスできるようする
- バージョン管理: スプレッドシートの「ファイル」>「バージョン履歴」で、過去のバージョンを確認・復元可能
- バックアップ: スプレッドシートを定期的に別の場所にコピーして、バックアップを作成
GASの使い方でよくある誤解やトラブル
GASを扱うのであれば最低限以下のことを理解しておきましょう。
- GASの実行速度: GASはクラウド上で動作するため、処理速度に限りがある
- GASのクォータ制限: GASには、API呼び出しやメール送信などの制限がある
- エラーハンドリング: GASでエラーが発生した場合、適切なエラーハンドリングが必要
とくに大量のデータを処理する場合は、処理を分割するか、他の方法を検討することがおすすめです。
まとめ
当記事でお伝えしてきたこと。
- GASとは?
- GASでスプレッドシートを扱う方法
- GASを使ったコードの実例
当記事では、GASでスプレッドシートデータを取得する基本的な方法をお伝えしました。
しかし、GASの可能性はこれだけにとどまりません。
より高度な機能や応用例を学ぶことで、GASを使ったスプレッドシート操作がさらに強力なツールとなります。
以下のような記事でもGASによる開発を丁寧に解説しています。
ぜひ参考にしてみてください。