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();
}