見出し画像

GASを勉強してみよう

スプレッドシートでCSVファイルを読み込んで必要な列だけ抽出したい
というお話をいただいて。

エクセルなら難なくできるんだけど(今働いてる職場でもそんな感じの作った)スプレッドシートはGASという言語なので、VBAとは全く別の文法。
全くってわけではないか。
英語と日本語ほどは違わない。韓国語と日本語くらいの違いです。
英語よりは文法が似てて、単語が違うってイメージですね。(英語と韓国語と日本語がどれも中途半端なトリリンガル笑)

まずはGASのコードの書き方から。まじで何もわからないのでイチからやりました。
参考にさせていただいたサイトはこちら。多謝!

んで2時間の成果がこれ。

function myCopyFunction() {
 
 //スプレッドシートの名前、シート名を取得
 const ss = SpreadsheetApp.getActiveSpreadsheet();
 const sheet1=ss.getSheetByName('元データ');
 const sheet2=ss.getSheetByName('抽出シート');
 //元データシートの最終行を取得
 const LastRow1 = sheet1.getLastRow()
 
 //タイトルを抜かして2行目から最終行までループ
 for(var i=2;i<=LastRow1;i++)
 {
   //元データシートのB列の文字がイチローだったらその行を転記
   if(sheet1.getRange(i,2).getValue() == "イチロー"){
     //抽出シートの最終行を取得
     var LastRow2 = sheet2.getLastRow() 
     //1~3列目までが転記対象
     for(var j=1;j<=3;j++)
     {
       //元データシートの1~3列目のデータを取得して
       var copyValue=sheet1.getRange(i,j).getValue();
       //抽出シートに貼り付け(最終行+1行目に)
       sheet2.getRange(LastRow2+1,j).setValue(copyValue); 
     }
   }
 }
}

B列に特定の文字が入っていたらその行を転記するというコードです。

1行ずつステップ実行する方法あるのかな?
エラーコードメッセージからどういうエラーか推測つくのかな?

などなど、デバッグの仕方がまだわかっていませんが、スプレッドシートの案件もちょこちょこ見かけるのでスプレッドシートのお仕事も依頼をもらえるように、GASの習得頑張ります!

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