実現したいこと
・従業員のフルネームが入力されているセル範囲を苗字のみに置換したい。
前提
スプレッドシートの単一の列に、ところどころ空欄や名前ではないものが入力されたセルを含みながら、従業員のフルネームが数百行に渡って羅列してあります。
姓と名の間に半角スペースがあるため、それを目印にして苗字のみに置換しようとしています。
発生している問題・エラーメッセージ
実行しても全く変化がなく、下記のコードの最終行部分をconsole.logで確認すると、「0」と表示されます。
該当のソースコード
GAS
1function myFunction() { 2 const sheet = SpreadsheetApp.openById("ファイルID").getSheets()[0]; 3 4 // シートの最終行を取得 5 const maxRng = sheet.getRange(sheet.getMaxRows(),7); 6// 従業員名が入力されている最終セルを取得 7 const lastRng = maxRng.getNextDataCell(SpreadsheetApp.Direction.UP); 8// 従業員名が入力されている最終セルの行番号を取得 9 const lastRow = lastRng.getRow(); 10 11// 従業員名が入力されているセル範囲を指定 12range = sheet .getRange(8,7,lastRow-7,1); 13 14// 従業員名の半角スペース以降を削除 15range.createTextFinder(/\s.+$/).useRegularExpression(true).replaceAllWith("");
試したこと
・以下のように記述した場合は問題なく動作しました。
GAS
1function myFunction() { 2 const sheet = SpreadsheetApp.openById("ファイルID").getSheets()[0]; 3 4 const maxRng = sheet.getRange(sheet.getMaxRows(),7); 5 const lastRng = maxRng.getNextDataCell(SpreadsheetApp.Direction.UP); 6 const lastRow = lastRng.getRow(); 7 8 for(let i = 8; i<=lastRow; i++){ 9// フルネームを取得 10 const fullName = sheet.getRange(i,7).getValue(); 11 12// フルネームが入力されていないセルは無視 13 if(fullName.match(" ") == null){ 14 continue; 15 } 16 17// フルネームから苗字だけに変換 18 const familyName = fullName.replace(/\s.+$/,""); 19 sheet.getRange(i,7).setValue(familyName); 20 } 21 22} 23
当方文系非エンジニアのため至らぬ点もあるかもしれませんが、何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー