2021年12月に、この記事(2次元配列を連想配列にするテクニック)に関する最新情報をブログにしました。
どうも。つじけ(tsujikenzo)です。今日はいつも使ってるライブラリ「SpreadsheetDateConverterToObject」について、機能を追加したのでマニュアルを更新したいと思います。
Ver.1.0とは
ver.1.0のマニュアルはこちらです。
今回追加したのは、下記の記事でも触れていた「今後追加したいと思っている機能」の中の「③処理→再2次元配列化」です。
戻り値の確認
このライブラリではメソッドによって2つのタイプの戻り値を返します。
//.getElementsArray()
//Array type
[
{id:’id’, name: 'name', age: 'age', favorite: 'favorite', address: 'address' },
{id:’tg001’, name:'Tsujike',age:35,favorite:'salmon',address:'Hokkaido'},
{id:’tg002’, name:'Etau',age:37,favorite:'coffee',address:'Miyazaki'},
{id:’tg003’, name:'Takahashi',age:38,favorite:'blog',address:'Tokyo'}
]
//.getElementsObject()
//Object type
{
id:{ id:’id’, name: 'name', age: 'age', favorite: 'favorite', address: 'address' },
tg001:{id:’tg001’, name:'Tsujike',age:35,favorite:'salmon',address:'Hokkaido'},
tg002:{id:’tg002’, name:'Etau',age:37,favorite:'coffee',address:'Miyazaki'},
tg003:{id:’tg003’, name:'Takahashi',age:38,favorite:'blog',address:'Tokyo'}
}
データの抽出や並び替えなど様々な加工を行うと思いますが、再度スプレッドシートに戻したいことも多いと思います。どちらのタイプでも2次元配列に変換できるようなメソッドを機能として追加したいと思います。
配列型オブジェクト
このようなデータを2次元配列に変換します。
const arr = [
{id:’id’, name: 'name', age: 'age', favorite: 'favorite', address: 'address' },
{id:’tg001’, name:'Tsujike',age:35,favorite:'salmon',address:'Hokkaido'},
{id:'tg002', name:'Etau',age:37,favorite:'coffee',address:'Miyazaki'},
{id:'tg003', name:'Takahashi',age:38,favorite:'blog',address:'Tokyo'}
]
これは.map()メソッドと.Object.values()メソッドで一発です。
const undoArr = arr.map(element => Object.values(element));
パーツ化
配列型オブジェクトを引数として受け取ると、2次元配列を返すfunctionとします。
/**
* 配列型オブジェクトを2次元配列に変換する
* @param {array} 配列型オブジェクト
* @return {array} 2次元配列
*/
function undoElementsArray(array) {
return array.map(element => Object.values(element));
}
オブジェクト型オブジェクト
このようなデータを2次元配列に変換します。
const obj ={
id:{ id:’id’, name: 'name', age: 'age', favorite: 'favorite', address: 'address' },
tg001:{id:’tg001’, name:'Tsujike',age:35,favorite:'salmon',address:'Hokkaido'},
tg002:{id:’tg002’, name:'Etau',age:37,favorite:'coffee',address:'Miyazaki'},
tg003:{id:’tg003’, name:'Takahashi',age:38,favorite:'blog',address:'Tokyo'}
}
これも.map()メソッドと.Object.values()メソッドの組み合わせで一発です。
const undoArray = Object.values(obj).map( element => Object.values(element));
パーツ化
オブジェクト型オブジェクトを引数として受け取ると、2次元配列を返すfunctionとします。
/**
* オブジェクト型オブジェクトを2次元配列に変換する
* @param {object} オブジェクト型オブジェクト
* @return {array} 2次元配列
*/
function undoElementsObject(object) {
return Object.values(object).map( element => Object.values(element));
}
ライブラリに追加
ソースコード上では新たにスクリプトファイル(ver1.1.gs)を作成し、追加したメソッドを記述しました。
デプロイ
新IDEではバージョン管理 = デプロイに変更されました。右上の[デプロイ]から[新しいデプロイ]をクリックします。
歯車から[ライブラリ]をクリックします。
バージョンが分かるような説明文を入れて[デプロイ]をクリックします。
「デプロイを更新しました」というメッセージが表示されたらOKです。バージョン2がデプロイされました。(名称的にはver1.1を説明文につけているのが少し分かり辛いですかね💦)
スクリプトIDは変更されていません。特にライブラリIDをユーザーに再通知する必要はありません。最後に[完了]をクリックします。
まとめ
以上で「SpreadsheetDateConverterToObject」に2つのメソッドを追加してライブラリを更新する(デプロイ)する流れをご紹介しました。
更新したマニュアルも同時にUPしますので、(初回マニュアルを更新ではなく、新規マニュアルとしてUPします。)こちらを参照ください。
まだまだ追加したい機能アイディアは沢山あるのですが・・・。気長にお待ちください!