概要
Google Apps Script(GAS)でスプレッドシートの情報を、テキストファイルやCSVファイルなどの出力をする方法です。
今回は、スプレッドシートに以下のような都道府県名のデータがあり、CSVファイル出力をしたいとします。
ソースコード
スクリプトエディタを開く
スプレッドシートのスクリプトエディタを開きます。
ソースコード
/**
* スプレッドシートの内容をCSVファイルへ出力
*/
function outputCsvFile() {
// 出力するフォルダのIDをプロパティより取得
const folderId = PropertiesService.getScriptProperties().getProperty("FOLDER_ID");
// 出力するファイル名
const fileName = '都道府県.csv';
// アクティブなシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// テキストに出力する範囲のデータを取得(A列、B列に入力されているデータを取得)
let values = sheet.getRange(1, 1, sheet.getLastRow()).getValues();
// 改行で連結(複数列の場合はカンマ区切り)
let contents = values.join('\n');
// テキストファイル書き出し
createTextFile_(folderId, fileName, contents);
}
/**
* CSVファイル書き出し
* @param {string} folderId フォルダID
* @param {string} fileName ファイル名
* @param {string} contents ファイルの内容
*/
function createCsvFile_(folderId, fileName, contents) {
// コンテンツタイプ
const contentType = 'text/csv';
// 文字コード
const charset = 'UTF-8';
// 出力するフォルダ
const folder = DriveApp.getFolderById(folderId);
// Blob を作成する
const blob = Utilities.newBlob('', contentType, fileName).setDataFromString(contents, charset);
// ファイルに保存
folder.createFile(blob);
}
ソースコードの解説
7行目は、プロパティよりCSVファイルを出力するフォルダのフォルダIDを取得しています。
10行目は、出力するファイル名を設定してください。今回はわかりやすく「都道府県.csv」としています。
13行目は、スプレッドシートのアクティブシートを取得しています。
他にもシートがある場合は、実行時は出力をするシートを開いてから実行をしてください。
16行目は、ファイルに出力をするデータを取得しています。A1から、入力されている最終行、B列までを取得しています。
19行目は、配列で取得されたデータを文字列に変換をしています。’\n’で連結することで改行して出力され、複数列の場合はカンマ区切りの文字列となります。
22行目は、31行目からの”createCsvFile_”というメソッドを呼び出しています。
34行目は、コンテンツタイプを設定しています。CSVファイルの場合は「text/csv」、テキストファイルの場合は「text/plain」のように出力する種類によって変更をしてください。
37行目は、文字コードを設定しています。環境に合わせて、「UTF-8」「Shift -JIS」などを設定してください。
40行目は、出力するフォルダを取得しています。
43行目は、ファイルへ出力するためのBlobと言われるデータを作成しています。
46行目は、ファイルに保存をしてファイル出力をしています。
実行方法
プロパティの設定
- CSVファイルを出力するフォルダのフォルダIDを確認します。
- プロパティに「FOLDER_ID」を、値にCSVファイルを出力するフォルダIDを設定をします。
実行
メニューで「outputCsvFile」が選択されていることを確認して、「実行」をクリックします。
出力されたCSVファイルの確認
指定したフォルダへ、「都道府県.csv」というファイルが出力されます。
ファイルの内容は、以下のキャプチャのようになります。