MENU
しゃり
関西弁ボブガール
アパレルに勤める20代。
猫を愛し猫に愛された女。
レモンサワーとハイボールが最近のお気に入り。
好きなブランド→グランマママドーター / ミズイロインド / ユナイテッドトーキョーなど

【GAS】Shift_JIS&ファイル名「シート名+作成日時.csv」で任意のフォルダへcsv出力する

  • URLをコピーしました!

タイトルが長いけど、調べても記事が出てこなかったので備忘録として書きます。

スプレッドシートでデータ作成したいけど、Shift_JIS形式のcsvじゃないと作動しなーい!

みたいなデータを作るときに便利です。

その道のプロではないので、煩雑な部分もあるかもですがご了承を。
動作は確認済みです。

この記事でできること
  1. スプレッドシートで作成したデータを、文字コードShift_JISでcsv出力する
  2. ファイル名に作成日時(yyyymmdd)を追加する
  3. 任意のフォルダに出力する
CONTENTS

準備①:ライブラリにUnderscore.jsを追加

ライブラリに「Underscore.js」を追加します。

なんか超定番JavaScriptらしいけど、詳しいことはよく分かりません。
ここでは現在日時を取得してくれるやつくらいに認識してます。

ライブラリ横の+を押して、下記スクリプトIDで検索します。

スクリプトID:

1PcEHcGVC1njZd8SfXtmgQk19djwVd2GrrW1gd7U5hNk033tzi6IUvIAV

この状態で追加すればOK!

準備②:出力用フォルダを作成

ドライブ内にフォルダを作成します。

ここに出力したcsvが自動的に保存されていきまーす!

GASはこれ!

function createCSV() {

  var sheetName = '***'; //CSVファイルにするシート名を指定
  var contentType = "text/csv";
  var charSet = "Shift_JIS";
  var lineDelimiter = ",";
  var newLineChar = "\r\n";
  var _ = Underscore.load(); 

  var today = Utilities.formatDate( new Date(), 'Asia/Tokyo','yyyyMMddHHmm');

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  

  //データ範囲を二次元配列で取得
  var values = sheet.getDataRange().getValues();


  // 2次元配列になっているデータをcsvのstringに変換
  let csvString = _.map(
    values,
    function(row){return row.join(lineDelimiter);}
  ).join(newLineChar);
  
  //二次元配列をカンマ区切りの文字列に変換
  var csv = values.join('\n');
  
  //Blobオブジェクトの作成
  var blob = Utilities.newBlob(csv, MimeType.CSV, sheetName + today + '.csv').setDataFromString(csvString, charSet);


  //CSVファイルの保存先フォルダを指定
  var id = '********'; //フォルダID
  var folder = DriveApp.getFolderById(id);
  
  //CSVファイルを作成
  folder.createFile(blob);

  
}

3行目CSVファイルにするシート名と34行目フォルダIDを入れてね!

フォルダIDの確認方法

フォルダIDは、フォルダURL末尾の記号英数字です。

https://drive.google.com/drive/u/0/folders/***************************

さいごに

保存したら実行するごとにフォルダに出力されていくと思います!

その道のプロではないので、煩雑な箇所があったらごめんね。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CONTENTS