基本的なアプローチは、スプレッドシートの現在の行数を特定し、その後に新しい行を追加することです。以下に、そのための簡単なスクリプトを示します。
末尾に行を追加する(insertRowAfter)
スプレッドシートの最後に新しい行を追加します。
function addRowToEnd() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // アクティブなシートを取得
var lastRow = sheet.getLastRow(); // 既存の最後の行を取得
sheet.insertRowAfter(lastRow); // 最後の行の後に新しい行を追加
// さらにデータを追加する場合は、ここにコードを追加します。例: sheet.getRange(lastRow + 1, 1).setValue("新しいデータ");
}
この関数を実行すると、アクティブなスプレッドシートの末尾に新しい行が追加されます。必要に応じて、新しい行にデータを入力するコードを追加することができます。
シート名を指定する
シート名を指定して操作する場合、SpreadsheetApp
オブジェクトの getSheetByName()
メソッドを使用します。このメソッドにより、指定した名前のシートオブジェクトを取得でき、その後で行の追加やデータの挿入など、さまざまな操作が可能になります。以下に、シート名を指定して末尾に行を追加する方法を示すスクリプトを示します。
function addRowToEndBySheetName() {
var sheetName = "シート1"; // 操作したいシートの名前
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシートを取得
var sheet = spreadsheet.getSheetByName(sheetName); // 指定した名前のシートを取得
if (sheet != null) { // シートが存在する場合
var lastRow = sheet.getLastRow(); // 既存の最後の行を取得
sheet.insertRowAfter(lastRow); // 最後の行の後に新しい行を追加
// 必要に応じて、ここにさらにデータを追加するコードを挿入できます。
} else {
Logger.log(sheetName + " という名前のシートが見つかりません。");
}
}
この関数では、まず操作したいシートの名前を sheetName
変数に設定します。getSheetByName()
メソッドを使用してそのシートを取得し、シートが存在する場合にのみ行の追加を行います。シートが見つからない場合は、ログにその旨が記録されます。
sheet != nullでシートが存在するかチェックしています。シート名が確実に存在する場合は、条件分岐は不要です。
特定のシート名で操作を行うことで、複数のシートが存在するスプレッドシート内でも、目的のシートに対して正確に行を追加することが可能になります。
末尾に行を追加する(appendRow)
appendRow()
メソッドを使用してGoogleスプレッドシートの末尾に新しい行を追加することが可能です。このメソッドは、配列内の各要素を新しい行の各セルに自動的に配置します。
function addRowToEndBySheetName() {
var sheetName = "シート1"; // 操作したいシートの名前
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシートを取得
var sheet = spreadsheet.getSheetByName(sheetName); // 指定した名前のシートを取得
var rowData = ['']; // 追加したい行の配列データ
if (sheet != null) { // シートが存在する場合
sheet.appendRow(rowData); // 最後の行の後に新しい行を追加
// 必要に応じて、ここにさらにデータを追加するコードを挿入できます。
} else {
Logger.log(sheetName + " という名前のシートが見つかりません。");
}
この関数を実行すると、指定したデータが含まれる新しい行がスプレッドシートの末尾に追加されます。appendRow()
メソッドは、特にデータ入力フォームや自動化されたデータ収集システムからのデータをスプレッドシートに追加する場合に便利です。
rowData に配列のデータを入れると、データも挿入されます。
function addRowToEndBySheetName() {
var sheetName = "シート1"; // 操作したいシートの名前
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のスプレッドシートを取得
var sheet = spreadsheet.getSheetByName(sheetName); // 指定した名前のシートを取得
var rowData = ['3', '山田太郎', 'yamada@example.com', '質問内容', '2024-03-24', '未対応', 'なし']; // 追加したい行のデータ
if (sheet != null) { // シートが存在する場合
sheet.appendRow(rowData); // 最後の行の後に新しい行を追加
// 必要に応じて、ここにさらにデータを追加するコードを挿入できます。
} else {
Logger.log(sheetName + " という名前のシートが見つかりません。");
}
}
カスタムメニューを追加する
onOpen() 関数を定義する:
onOpen関数は、スプレッドシートが開かれるたびに自動的に実行される特別な関数です。この関数内で、カスタムメニューを作成し、それにアクション(実行したいスクリプト)を追加します。
function onOpen() {
var ui = SpreadsheetApp.getUi(); // スプレッドシートのUIを取得
ui.createMenu('カスタムメニュー') // 新しいメニューを作成
.addItem('項目1を実行', 'menuItem1Function') // メニュー項目を追加
.addItem('項目2を実行', 'menuItem2Function') // 別のメニュー項目を追加
.addToUi(); // UIにメニューを追加
}
スクリプトをGoogle Apps Scriptエディタに貼り付けた後、スクリプトを保存してからスプレッドシートを開き直してください。
スプレッドシートのメニューバーに「カスタムメニュー」が追加されていることを確認し、そのメニュー項目を選択すると、関連付けられた関数が実行されます。
まとめ
カスタムメニューから実行される関数は、シンプルなアラート表示から、スプレッドシート内のデータの操作や外部APIとの通信など、さまざまな処理を行うことができます。
insertRowAfterやappendRowを使用して特定のシート名で操作を行うことで、複数のシートが存在するスプレッドシート内でも、目的のシートに対して正確に行を追加することが可能になります。