はじめまして、GAS初心者の者です。業務にGASを使ってスプレッドシートの
運用を効率化させたいと思っています。
質問の具体的な内容としては写真1(食べ物リスト)のようなリストの
内容をGetRANGEで二次元配列で取り、写真2(全情報)のカラムAの内容と合致する
ものにBの内容(色)を書き込みたいと思っております。
コードは何となくFor文で[i]に配列の要素を一つずつ入れて
全情報のシートを指定して、Get_rowでrowを特定してから
一つずつSetvalueしていこうと考えています。
ただ食べ物リストのA~Bを配列にしたときBの値だけをうまく
抜き出す事が出来ません。
どなたか二次元配列でBの部分だけとるやり方を教えて
いただけませんでしょうか。
恥ずかしながらコードを途中まで書いたのですが、
変数「tabeMono」で取得する値を色だけにしたいと思っております。
また色の値だけを取ってからの命令文(下記コードのLogger.log以下)
についてもアドバイスを頂けましたら幸いです。
なにとぞ宜しくお願いいたします。
1function input_value(){ 2var mySS=SpreadsheetApp.getActiveSpreadsheet() 3var sh = mySS.getSheetByName("食べ物リスト"); 4var sh2 = mySS.getSheetByName("全情報"); 5var tabeMono = sh.getRange("A2:B"+ sh.getLastRow()).getValues(); 6var col = "A" 7for (var i = 0; i < tabeMono.length; i++) { 8Logger.log(tabeMono[i]); 9}
途中まででもよいのでコード書いて、ここまでは理解できるというのを示した方が回答つくと思います。
掲載されてることを実現したいだけなら、VLOOKUPなどの関数を使っても実現できます。
コメントいただきありがとうございます。またご指摘いただきありがとうございました。
早速、質問を編集しなおします。行き詰ってしまって何を書いたら良いかわからなくて文章だけになったおりました。「食べ物リスト」のパラメータが変わったりするので変数にしようかと思っております。
> どなたか二次元配列でBの部分だけとるやり方を教えて
いただけませんでしょうか。
> また色の値だけを取ってからの命令文(下記コードのLogger.log以下)
色だけをとってからではそれが何の色なのかはわからないので、野菜と色のペアとして取得しているtabemonoは正しいことをしていると思います。
足りてないのは埋めるべき表と辞書を二重ループする処理だと思います。
vlookupだとソート済であることが要求されないですかね?
papinianusさんが回答されて解決済みとなったので、今更ですがご質問の
>Bの部分だけとる については質問のコードであれば、
Logger.log(tabeMono[i]); を Logger.log(tabeMono[i][1]);
としてあげると B列の値だけ出力されます。
papinianusさんのMapを使った方法が一番スマートだと思いますが、最初のうちはコード読み解くの難しいと思いますので、いろいろな方法を試しつつスキルアップを目指されるとよいかと。
ちなみにvlookup は 4番目の引数をFALSEを指定してあげれば、ソート済みでなくても大丈夫です。https://support.google.com/docs/answer/3093318?hl=ja
回答1件
あなたの回答
tips
プレビュー