見出し画像

ダメでも無理矢理実行! GAS

ここをクリアしなくては先へ進めない。進みたくない。

こんにちは!サキナオコです^^
今日は曇りで雨が降りそうな降らなそうな。

いつもご覧いただき、スキ、フォロー、コメント、サポート、オススメまでも本当にほんとうにどうもありがとうございます!!*^o^*
今日また進む力をいただきました!!^o^/

ええーっと、前回うまく実行できないままだった、findメソッドを使った方法のスクリプト。

保存もできず、写経したスクリプトが全消えしてました。
気持ちを奮い立たせて再度写経。実行!

あら。うまくいきました。
前回なぜうまくいかなかったのかわからないままですが、もういいです。
書き直したらうまくいくというのは、よくあることです。
先へ進みます。

配列を使ったデータの抽出です。
filterメソッドを使うとのこと。

はい、今日も高揚感を得るべく無意味にスクリプトで表を作成。
あーたまらん。よし。では写経しまして実行!

おや。だめです。エラーが出ています。
何度も見直しましたが、どこが悪いのかさっぱりわからず。
仕方ないので、テキストのサンプルファイルをwebからダウンロードしました。

サンプルファイルをコピペして、実行!
あ。だめです。エラーが出ています。これは元々何かおかしいのですね。

凝視…わかりません。
いろいろわからないままやってみました。
わからないけれど、このまま進みたくありません。

途中途中でconsole.logを入れて様子をみます。
途中まで正常になっていました。
ところが新しくシートを作るところで何かおかしいみたいです。

ということはgetSheetByNameがおかしいのか、と思いあたりました。
getするファイルが作成されていません。
そりゃ、nullとか出るなあと気づきました。

とにかく新しくシートを作って、抽出データを入れればいいんですよね!

とここで、なんと!高揚感を得るために作ったスクリプト再登場です。
新しくシート作るコードありましたよね!

それを使いいろいろやっていたら、うまくいきました。
わーい!ヤッホ〜〜!

抽出スクリプト使用前(注*データ内容デタラメ)

スクリーンショット 2021-09-17 13.33.29

function myFunction_9_17_1() {
 const ss = SpreadsheetApp.getActiveSpreadsheet();
 const values = ss.getActiveSheet().getDataRange().getValues();
 const header = values.shift();

 const targetValues = values.filter(record => {
   const [name,age] = record;
   return age>20;
 });


 targetValues.unshift(header);
 console.log(targetValues);

 const newSheet = ss.insertSheet('出力シート');
 
 newSheet.getRange(1,1,targetValues.length,targetValues[0].length).setValues(targetValues);
}

使用後(20歳以上だけが抽出)

スクリーンショット 2021-09-17 13.32.31

はぁ、諦めなくてよかった。
スッキリしました。本日終了〜。

この記事が気に入ったらサポートをしてみませんか?