【GAS】Google Apps ScriptでSpreadSheetの書き込み系処理の基本を解説

Google Apps Script(以下GAS)でSpreadSheetの書き込み系の処理の基本を解説します。

この記事でわかること
  • GASでSpreadSheetの扱い方の基本がわかる
  • GASでSpreadSheetの書き込み系処理の基本がわかる

範囲の指定や読み込み系処理の基本は、こちらで解説しているので参考にしてください。

【GAS】Google Apps ScriptでSpreadSheetの範囲指定とデータ取得系操作の基本を解説

モグモグさん

公式のドキュメントはこちらにありますので、参考にしてください。

SpreadSheetからApps Scriptを開く

Apps Scriptを開く

任意のSpreadSheetから、Apps Scriptを開きます。

エディタ画面が開けばOKです!

ワークブックとシートを指定し取得

お約束のコードでワークブックとシートを指定して取得します。

const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のSpreadSheetを取得
const sheet = activeSpreadSheet.getSheetByName('テスト'); // シート(SpreadSheetの下のタブ名を指定)

メモ

ワークブックとシートの指定の方法は複数あるので、気になる方はこちらの記事をどうぞ〜。

【GAS】Google Apps ScriptでSpreadSheetのワークブックを指定する方法を解説【GAS】Google Apps ScriptでSpreadSheetのシートを指定する方法を解説

特定のセルに値を書き込む

setValueを使う

setValueでセルに値を書き込むことができます。

sheet.getRange("A1").setValue("テスト");

実行結果

A1に「テスト」が書き込まれていることを確認しましょう。

特定の範囲に複数のデータを書き込む

特定の範囲に複数のデータを書き込む場合は、setValuesを使います。

setValuesには、2次元配列を渡します。

2次元配列の例

// 2次元配列 = 配列の中に配列がある構造
[
  ["野球", "サッカー"],
  ["バスケ", "バレー"],
  ["テニス", "陸上"]
]

setValuesを使う

メモ

こちらの書き方で、2次元配列の値を全て書き込めます。

頻繁に使いますので覚えておくと良いと思います。

sheet.getRange(1, 1, values.length, values[0].length).setValues(values);

const values = [["野球", "サッカー"],["バスケ", "バレー"],["テニス", "陸上"]];
sheet.getRange(1, 1, values.length, values[0].length).setValues(values);

実行結果

A1:B3に上記のスポーツがそれぞれ書き込まれているか確認しましょう。

最終行の次の行に値を書き込む

最終行の次の行に値を書き込むには、主に2つ方法があります。

appendRowを使う

sheet.appendRow(["ソフトボール", "剣道"]);

実行結果

値が存在する行の次の行に、追加したスポーツが書き込まれているか確認しましょう。

補足

appendRowは簡単に使えますが、行を追加するだけなので2次元配列を追加するようなことはできません。

そういったケースでは、次で紹介するgetLastRowで最終行を取得し、範囲を指定しsetValuesを呼びます。

getLastRowを使う

const values = [["ソフトボール", "剣道"],["柔道", "ゴルフ"]];
const lastRow = sheet.getLastRow(); // 最終行を取得
sheet.getRange(lastRow+1, 1, values.length, values[0].length).setValues(values); // 最終行に1を追加して、最終行の次の行を指定

実行結果

値が存在する行の次の行に、追加したスポーツが書き込まれているか確認しましょう。

まとめ

モグモグさん

ここまでで、GASでSpreadSheetを読み込んで範囲を指定し、値を書き込む基本は理解できると思いますのでユースケースに合わせて利用してみてください!

コメントを残す

メールアドレスが公開されることはありません。