初心者必見!GASで分割代入をマスターする方法

GASって便利だって聞いたんだけど、分割代入ってどういうものなのかな?なんだか難しそうで…
猫男
猫男
catman
catman
安心しろ、catmanがGASの分割代入についてしっかり教えるぞ!

GASでの分割代入の基本

GAS(Google Apps Script)で使う分割代入は、JavaScriptの基本的な機能の一つだ。複数の変数に簡潔に値を割り当てられる便利な方法さ。

まずは基本的な使い方を見てみよう。


const array = ["catman", "GAS", "分割代入"];
const [hero, script, technique] = array;
Logger.log(hero); // catman
Logger.log(script); // GAS
Logger.log(technique); // 分割代入

配列内の要素を順番に、変数に取り出せるので、コードがシンプルになる。

オブジェクトの分割代入

オブジェクトでも分割代入が使えるんだ。オブジェクトの場合はキーによって取り出す。


const character = {
  name: "catman",
  ability: "GAS Master",
  sidekick: "猫男"
};

const { name, ability, sidekick } = character;
Logger.log(name); // catman
Logger.log(ability); // GAS Master
Logger.log(sidekick); // 猫男

オブジェクトは順番ではなく、キー名で対応する値を変数に取り出す。

分割代入の応用テクニック

GASでの分割代入をもっと使いこなすための応用テクニックを見ていこう。

デフォルト値を設定する

変数にデフォルト値を設定することで、確実に値が割り当てられるようになる。


const [hero = "unknown", script = "GAS", technique = "none"] = ["catman"];
Logger.log(hero); // catman
Logger.log(script); // GAS
Logger.log(technique); // none

配列から値が提供されない場合に備えて、デフォルト値を設定できる。

ネストしたオブジェクトの分割代入

オブジェクトがネストしている場合も分割代入は使えるさ。


const heroDetails = {
  name: "catman",
  skills: {
    coding: "excellent",
    combat: "advanced"
  }
};

const { name, skills: { coding, combat } } = heroDetails;
Logger.log(name); // catman
Logger.log(coding); // excellent
Logger.log(combat); // advanced

ネストしたオブジェクトのプロパティに直接アクセスできるんだ。

すごい!GASでは分割代入をこんな風に使えるんだね。
猫男
猫男

まとめ:GASでの分割代入をマスターしよう

  • 配列の分割代入で順番に値を取り出せる
  • オブジェクトの分割代入でキー名を使って値を取り出せる
  • デフォルト値を設定して安全に代入
  • ネストしたオブジェクトでも強力に取り出し可能
これでGASの分割代入も少し自信が持てるようになったよ!ありがとう、catman!
猫男
猫男
catman
catman
いい感じだ。どんどんスクリプトを試してスキルアップを目指すといいぞ!

練習問題

次のGASスクリプトに分割代入を使って、名前とスキルを取り出そう。


const heroInfo = {
  alias: "hero",
  details: {
    realName: "John Doe",
    skills: "Intermediate"
  }
};

// ここに分割代入を用いる
Logger.log(realName); // John Doe
Logger.log(skills); // Intermediate

  

解答・解説


const heroInfo = {
  alias: "hero",
  details: {
    realName: "John Doe",
    skills: "Intermediate"
  }
};

const { details: { realName, skills } } = heroInfo;
Logger.log(realName); // John Doe
Logger.log(skills); // Intermediate

このスクリプトは分割代入を使って、heroInfoオブジェクトのdetailsプロパティからrealNameとskillsを直接取り出している。

ネストしたオブジェクトからも簡単にプロパティを取り出せる、この方法はとても便利だ。