実現したいこと
- GASで、C列に特定の文字が入っていた場合のみ、A列にある値を別のスプレッドシートの最終行の1行下から順番に貼り付けたい。
前提
スプレッドシートで台帳管理をしております。
A列...ID
B列...名前
C列...条件(3種類の回答のうち1つ)
CSVでシステムに取り込むのにあたり、C列の条件に該当する人のみを別シートにIDを貼り付けたいと思っております。
発生している問題・エラーメッセージ
for文とif文(indexOf)を使い、必要なIDを抽出するところまではできました。
しかし、最終行の1行下(1行目が項目名だった場合2行目)に繰り返し貼り付けられてしまい、3人該当者がいた場合に最後の1人しか表示されないことになっています。
理想は、3人いた場合は1行目項目名、2行目1人目、3行目2人目、…と下の行に続いて貼り付けを行ってほしいです。
const ss = SpreadsheetApp.getActiveSpreadsheet(); const list = ss.getSheetByName("台帳") const csv = ss.getSheetByName("CSV用") const lastrowL = list.getRange(list.getMaxRows(),1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); const lastrowC = csv.getRange(csv.getMaxRows(),1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); for(let i = 2; i <= lastRowL; i++){ let range = list.getRange(i,3); let discri = range.getValue(); if(discri.indexOf('条件名')>=1){ continue } list.getRange(i,1).copeTo(csv.getRange(lastRowC+1,2,1,1),{contentsOnly:true}); }
最終行は関数を他のセルに入れているため、特定の列を使い取得しています。
iの値が変わるたびに最終行が更新される(貼り付けられた行が最終行となる)ようにできるのでしょうか
試したこと
開始行をiにすると条件を付けているので貼り付けがとびとびになってしまいました。
いくら調べても飛び飛びとなるiの値を順番に1行ごとに貼り付ける方法がわからなかったため、新規で登録し質問をさせていただきました。
1から勉強をしているわけではなく、やりたいことを調べながら少しずつ学んでいるため、至らないことが多々あるかと思いますが、ご指導いただけますと幸いです。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/23 23:20