見出し画像

ChatGPTで、スプレッドシートの特定の文字を含む行を別のシートに移動させる作業のスクリプトを書いてもらう【備忘録】

ChatGPT備忘録としてのメモ。例えば、スプレッドシートの一覧に500行以上のテキストデータがあるとして、その中に特定のキーワードを含むものだけ、となりのシートにコピーしたい場合、たいてい並び替えてみたり、関数で行に印をつけるといった作業になるが、今回は、これを丸ごとプロンプトとして投げる

スプレッドシートで「#Shorts」と書いてある行だけ別のシートに動かしたい、マクロを教えて

すると、下記のようなGASのスクリプトを書いてくれる。これをApps Scriptに貼り付けて実行すれば、速攻でこういう作業が終わる。

実はこういう積み重ねが時短になるのがChatGPTの地味に凄いところ

function moveShortsRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName("元のシート名"); // 元のシート名を指定
  var targetSheet = ss.getSheetByName("移動先のシート名"); // 移動先のシート名を指定
  var sourceRange = sourceSheet.getDataRange();
  var sourceValues = sourceRange.getValues();
  
  var rowsToMove = [];
  var rowsToDelete = [];

  // '#Shorts'が含まれる行を検索
  for (var i = 0; i < sourceValues.length; i++) {
    var row = sourceValues[i];
    if (row.join().indexOf('#Shorts') !== -1) { // 行内に'#Shorts'が含まれているかチェック
      rowsToMove.push(row);
      rowsToDelete.push(i);
    }
  }

  // 移動先のシートに行を追加
  if (rowsToMove.length > 0) {
    targetSheet.getRange(targetSheet.getLastRow() + 1, 1, rowsToMove.length, rowsToMove[0].length).setValues(rowsToMove);
  }

  // 元のシートから行を削除(後ろから削除していく)
  for (var i = rowsToDelete.length - 1; i >= 0; i--) {
    sourceSheet.deleteRow(rowsToDelete[i] + 1); // 行番号は1始まりのため+1
  }
}


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