対象者
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列を抽出したい、など
ここをしっかりと記載すれば、グンと効率は良くなります。