LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Friday, May 29, 2020

配列内の複数オブジェクトで特定の値が存在するか知りたい


タイトルで表現するのが難しいのですが

以下のような複数のオブジェクトを含む配列があって

enがLeoのものがあるか true / false で判定したい

var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]



コード.gs 
var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]

function myFunction() {
  var value = "Leo";
  var result = hasValue(value);
  Logger.log(result);
}

function hasValue(value) {
  for(var i = 0; i < objs.length; i++) {
    var obj = objs[i];
    if(obj["en"] === value) {
      return true;
    }
  }
  return false;
}

意訳
オブジェクトたちを入れた配列を用意する














この機能がやること
探す値を決めて
hasValueに渡して
結果をログに出す


この機能がやること
objsの要素の数だけ繰り返す
objsの要素をひとつずつ取り出して
valueと同じなら
true返す


途中でtrueを返さなければfalseを返す




実行結果

var value = "Leo" で myFunction()を実行した結果→true


var value = "Cat" にして myFunction()を実行した結果→false


最初に思いついた書き方

hasValueの処理が冗長に感じて、上記コード.gsに書き換えました

コード2.gs
var objs = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]

function myFunction() {
  var value = "Leo";
  var result = hasValue(value);
  Logger.log(result);
}

function hasValue(value) {
  var result;
  for(var i = 0; i < objs.length; i++) {
    var obj = objs[i];
    if(obj["en"] === value) {
      result = true
      return result;
    } else {
      result = false
    }
  }
  return result
}




Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...