JavaScript初心者必見!GASでスプレッド構文を使いこなそう

GASでスプレッド構文ってどうやって使えばいいんだろ?便利だって皆が言ってるけど、全然ピンとこないんだ…
猫男
猫男
catman
catman
よし、catmanが「GASでのスプレッド構文」について解説してやろう!これが分かれば、コードの書き方が一気にスマートになるぞ。

GASでスプレッド構文の基本

スプレッド構文は、配列やオブジェクトの要素を展開するために使われます。

まずは、JavaScript内での基本的な使い方から学んでみよう。

配列でのスプレッド構文

配列に新たな要素を加えたり、別々の配列を一つにまとめるときに便利です。

const fruits = ['リンゴ', 'バナナ'];
const moreFruits = [...fruits, 'オレンジ', 'グレープ'];
Logger.log(moreFruits); // ['リンゴ', 'バナナ', 'オレンジ', 'グレープ']

配列の要素を展開することで、新しい配列を簡単に作成できます。

オブジェクトでのスプレッド構文

オブジェクトのプロパティをコピーして、新しいオブジェクトを作成可能です。

const person = {name: 'catman', age: 5};
const updatedPerson = {...person, age: 6};
Logger.log(updatedPerson); // {name: 'catman', age: 6}

元のオブジェクトの情報を損なわずに、新しいオブジェクトを展開します。

おぉ、こんな風に展開できるんだね!でも、GASでどう活かせばいいのかな?
猫男
猫男

GASでのスプレッド構文活用法

GASにおいても、スプレッド構文は非常に便利です。特にスプレッドシートデータの取り扱いに活用されます。

スプレッドシートデータの取り込み

スプレッドシートのデータを取得し、スプレッド構文で展開することで容易に操作できます。

function getData() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const [header, ...rows] = data;
  Logger.log(header); // スプレッドシートの最初の行(ヘッダー)
  Logger.log(rows);  // 残りのデータ行
}

最初の行をヘッダーとして分けて、残りのデータ行を展開して整理します。

データを別のシートにコピー

データを展開・組み直して、別のシートにコピーできます。

function copyData() {
  const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('元のシート');
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('新しいシート');
  const data = sourceSheet.getDataRange().getValues();
  targetSheet.clear(); // 既存のデータをクリア
  const copiedData = [...data]; // データのコピー
  targetSheet.getRange(1, 1, copiedData.length, copiedData[0].length).setValues(copiedData);
}

データをそのまま別のシートにコピーすることが簡単にできます。

理解した!これなら複雑なデータ操作も簡単になりそうだね!
猫男
猫男

練習問題

以下のスクリプトを完成させてください。スプレッドシートからデータを取得し、スプレッド構文を使ってリストの2番目以降のデータを取り出し、ログに出力してください。

function practiceSpreadSyntax() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();

  // スプレッド構文を使ってデータの2番目以降をrowsに代入
  const [header, _______________] = data;
  
  // ログに出力
  Logger.log(rows);
}

 

 

解答・解説

function practiceSpreadSyntax() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();

  // スプレッド構文を使ってデータの2番目以降をrowsに代入
  const [header, ...rows] = data;
  
  // ログに出力
  Logger.log(rows);
}

このスクリプトでは、「…rows」とすることで、スプレッドシートのデータの2番目以降を展開し、変数rowsに代入しています。

getDataRange().getValues()メソッドは、シート内のすべてのデータを2次元配列として取得し、それをスプレッド構文で展開して各行にアクセスしやすくするのです。

catman
catman
これでGAS内でもスプレッド構文を使って、コードをシンプルにできるはずさ!続けて学び、スクリプトを強化しよう!