やりたいこと
商品管理シートから、別システム取り込み用のデータを出そうとしています。
大元のspreadsheetから、特定の条件に合致する商品を抽出し、その後必要な列だけ抜き出し、最後に先頭行に項目名をつけて出力ということがしたいです。
GAS
1function sort() { 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const sh = ss.getSheetByName("商品管理"); 4 let lastRow = sh.getLastRow(); 5 let lastCol = sh.getLastColumn(); 6 7//抽出する条件項目(A1セルに記載)を取得 8 const range = sh.getRange('A1'); 9 const planNo = range.getValue() 10 11 //表のデータ取得(リストは9行目から) 12 let arr = sh.getRange(9,1,lastRow,lastCol).getValues(); 13 14 //特定の条件に合致するものを抽出 15 arr= arr.filter(elm => (elm[23] === planNo)); 16 17 //必要な列の取り出しと並び替え 18 arr= arr.map(elm => [elm[4],elm[6],elm[7],elm[14],elm[16],elm[20],elm[21],elm[12]]); 19 20 //先頭にタイトル行追加 21 arr.unshift = (["SKU","ASIN","商品名","仕入金額","国内送料/個","納品費用合計","国際送料","納品数"]); 22 Logger.log(arr); 23}
この続きはここでは書いていないですが、配列として取り出した後は、csvファイルとして保存します。
解決したいこと
unshiftさせた先頭の項目名が出てこず、項目名以外の配列がそのまま出力されてしまいます。
ログを確認すると、なぜか配列の最後にunshiftという列が追加されています。
他のpushなどの配列操作を試しましたが同様に最後に関数名?の配列ができてしまいます。
先頭行に項目名をつけて、最終的にこのような配列を出したいのですが、解決方法ご教示いただけませんでしょうか。
項目名だけ残した別のシートに貼り付けということはできるのですが、シートを増やしたくないので、できれば配列内で解決したいです。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 03:42