[Chat GPTでGAS]Chat GPTを使用してGAS(Google Apps Script)を作成してみた。

ホーム » GAS » [Chat GPTでGAS]Chat GPTを使用してGAS(Google Apps Script)を作成してみた。

対象者

Chat GPTの何が凄いか知りたい方
実際に業務で、使用できるか知りたい方
Chat GPTでGASを作成してみたい方


事前準備

今回作成する際にChat GPTを使用します。
登録せずとも、大丈夫ですが始めたい方はこちらを参照してください。
Chat GPT公式サイト

実際に作成したいもの

今回作成したいのは下記になります。

①スプレッドシートから情報を抽出
 特定の列が空白である、特定行の特定列の値のみを抽出
②抽出した情報を新しいスプレッドシートに
 新しいスプレッドシートの作成・上書きが必要
③抽出した、スプレッドシートをエクセルファイルに変換
 業務使用を考慮して、共有ドライブのフォルダにエクセルを保存する。

作成したコード

function myFunction() {
  var outputFolder = DriveApp.getFolderById("スプレッドシート抽出フォルダID");
  var folder = DriveApp.getFolderById("エクセルファイル抽出フォルダ");
  var files = folder.getFiles();
 
  while (files.hasNext()) {
    var file = files.next();
    var id = file.getId();
    var name = file.getName();
    var existingFileIterator = outputFolder.getFilesByName(name);
   
    if (existingFileIterator.hasNext()) {
      var existingFile = existingFileIterator.next();
      var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?format=xlsx";
      var options = {
        method: "get",
        headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      };
      var response = UrlFetchApp.fetch(url, options);
      var blob = response.getBlob();
      var newFile = outputFolder.createFile(blob);
      newFile.setName(name);
      outputFolder.removeFile(existingFile);
    } else {
      var url = "https://docs.google.com/spreadsheets/d/" + id + "/export?format=xlsx";
      var options = {
        method: "get",
        headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      };
      var response = UrlFetchApp.fetch(url, options);
      var blob = response.getBlob();
      var newFile = outputFolder.createFile(blob);
      newFile.setName(name);
    }
  }
}

手順

上記が一応の完成形になります。
ここからは、作成するまでの流れを記載していきます。

「スプレッドシートから情報を抽出してエクセルファイルに変換したい。」
そのまま、記入したところ結果は下記になります。

先ほどの「スプレッドシートから情報を抽出してエクセルファイルに変換したい。」
に「GASで実施したい」を付け加えるとコードが帰ってきました。

その時のコードは下記になります。
ここまでの作業時間は2~3分ほどになります。
このコードだけでは、作成したいものが少し欠けた状態になります。
細かい要望も伝えることができるので、最後に調整して完了となります。

function convertToExcel() {
  // 変換するスプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  // 変換するシートを指定
  var sheet = ss.getSheetByName("Sheet1");
  
  // シートのデータを取得
  var data = sheet.getDataRange().getValues();
  
  // Excelファイルに変換するためのBlobを作成
  var blob = Utilities.newBlob(convertDataToExcel(data), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "converted_data.xlsx");
  
  // 変換したExcelファイルをダウンロード
  DriveApp.createFile(blob);
}

// データをExcelファイルに変換する関数
function convertDataToExcel(data) {
  // 変換に必要なライブラリを読み込み
  var excelBuilder = new ExcelBuilder.Builder();
  
  // Excelファイルにデータを書き込む
  var sheet = excelBuilder.createWorksheet({name: "Sheet1"});
  data.forEach(function(row, index) {
    sheet.setDataRow(index + 1, row);
});
  
  // Excelファイルを作成してバイナリデータを返す
  var file = excelBuilder.createFile([sheet]);
  return file.getBytes();
}

作成したGASの使い方と詳細についてもコメントがあります。

平凡太郎
平凡太郎

軽い要望と言語を伝えただけで、ここまで作成してくれるのは本当に驚きますよね。

■最後に

今回の形で分かったように、コードを書いてもらうときに必要なのは下記になります。
最初はうまく答えを生成できないかもしれないですが、意識してやってみましょう。

・どういった処理を実行したいのか
・言語は何にするのか
・読み込みたい列抽出したい列なども指定することができます。
 ※F列が空白の場合
  A列~E列を抽出したい、など

ここをしっかりと記載すれば、グンと効率は良くなります。

[Chat GPT]Chat GPTのはじめ方・エラー解決・メリット・デメリット

タイトルとURLをコピーしました