
Photo by
strongfeeling
【GAS】Google Apps Script 活用事例 コピペすると、1行目がズレる表を、意図した通りに直して、要らない列を省くスクリプト
ちょっとした手間だけど、煩わしい
業務の中で、ログインが必要なサイトからコピペしなければならない表があります。しかも、その表をスプレッドシートに貼る際に、最初の1行が必ずズレます。手元のシートで再現するとこんな感じ。
実際にはコピペした表の中に要らない列があって、それを毎回、手動で省いていました。何とか出来ないかなーと思っていて、スクリプト書きました。
この1行で、空白セルを省く事が出来る
//空白セルだけ除きたい場合 1行ズレる対策
const results = values.map(row => row.filter(value => value));
ちゃんと空白列が省けています。
さらに要らない列を省く
const newResults = results.map(array => array.reduce((accumulator, current, index) =>{
console.log(accumulator, current, index);
//indexが、1か3のみを配列に入れる。2列目、4列目のみ
if(index === 1 || index === 3){
accumulator.push(current);
}
return accumulator
}, [])//reduce
);//map
console.log(newResults);
今回は、タスク名と優先度のみを抽出したいと仮定します。その場合、こんな感じで書けます。
・ 2次元配列から、1次元配列のみを取り出すのに、mapを使用
・ 1次元配列の、indexが、1 か 3 のみを配列に追加します。
for文を回して、新しい配列に要素を追加していくというやり方でも出来るのですが、苦手意識のあるreduceを使ってみました。reduceを使うと、for文を書いたり、配列の変数を用意しなくて済みます。
動きが直感的に理解しにくいという側面がありますが、そのデメリットをうわまるくらい良い働きをしてくれます。
余談ですが、最近、GAS活用によって出来る幅がさらに広がった実感を持てるようになりました。後から読んだ際に分かりやすい変数の置き方、コメントの残し方などが段々と分かってきました。ノンプロ研のGAS講座に通ったのが、2019年9月だったので、1年半くらい経過しました。
1年半くらいプログラミング続けると変わるんだな....と。