LoginSignup
0
0

More than 1 year has passed since last update.

【GAS】スプレッドシートをcsvに変換してS3にアップロードするサンプルコード

Last updated at Posted at 2022-05-04

S3ライブラリの追加

プロパティストアに、以下を追加

  • awsAccessKeyId
  • awsSecretKey
  • SpreadsheetId

メイン関数の実装

// ssToS3.gs

function ssToS3() {
  var awsAccessKeyId = PropertiesService.getScriptProperties().getProperty("awsAccessKeyId");
  var awsSecretKey = PropertiesService.getScriptProperties().getProperty("awsSecretKey");

  // スプレッドシートを取得
  var SpreadsheetId = PropertiesService.getScriptProperties().getProperty("SpreadsheetId");
  var ss = SpreadsheetApp.openById(SpreadsheetId);
  // シートのオブジェクトを取得
  var sheet = ss.getSheetByName(Setting.targetSheetName);
  const lastRow = sheet.getLastRow();
  // データを取得
  var data = sheet.getRange(Setting.tableRange).getValues();

  // 送信データ用の配列
  var csvString = '';
  for ( var i = 1; i < lastRow; i++ ) {
    if (data[i][Setting.amazonUrl] != '') {
      csvString += '"' 
                    + data[i][Setting.foo] + '","'
                    + data[i][Setting.bar] + '","'
                    + data[i][Setting.baz] + '","'
                    + data[i][Setting.hoge] + '","'
                    + data[i][Setting.piyo] + '","'
                    + "\n";
    }
  }

  csv = Utilities.newBlob(csvString, "text/csv", "UTF-8");
  
  var s3 = S3.getInstance(awsAccessKeyId, awsSecretKey);
  s3.putObject( 'バケット名', 'ファイルパス', csv, {logRequests:true} );
}

定数管理のために設定クラスを用意

// setting.gs

class Setting {}

// 対象シート名
Setting.targetSheetName = 'シート1'

// テーブルの範囲
Setting.tableRange = 'A:E'

// 列設定(0オリジン)
Setting.foo   = 0
Setting.bar   = 1
Setting.baz   = 2
Setting.hoge  = 3
Setting.piyo  = 4

ついでにメニューから実行できるようにしよう

// onOpen.gs

function onOpen() { 
 var ui = SpreadsheetApp.getUi(); 
 var menu = ui.createMenu("スクリプト"); //メニュー名 
 menu.addItem('ssToS3','ssToS3'); //表示名、スクリプト名 
 menu.addToUi(); 
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0