はじめに
以前Google Apps Scriptを使い、S3のCSVをスプレッドシートに書き出す方法を記事にしました。
今回は、S3にあるファイルをGoogleDriveにダウンロードする方法になります。
参考
やったこと
AWS側
以下を作成します。
- S3バケット
- 対象のファイルを置く
- IAMユーザ
- 上記S3バケットへのGetObjectの権限あり
- アクセスキーを取得する
手順は以前の記事と同じになります。
S3のバケットには以下の画像をtestfolder/アイコン画像.png
として置きました。
Google側
以下を行います。
- Apps Script編集画面を開く
- S3ライブラリの追加
- スクリプト記述
こちらも、以前の記事の方法と同じになります。
コードは以下になります。各設定値にはそれぞれの値を代入ください。
コード.gs
function myFunction() {
// 設定値
//// AWSのアクセスキーの情報
const accessKeyId = '';
const secretAccessKey = '';
//// S3のファイルの情報
const bucketName = '';
const objectName = encodeURI(''); // パスに全角文字があった場合のためにエンコード
//// Google Drive上のフォルダID
const folderId = '';
// 処理
//// S3インスタンスを作成
var s3 = S3.getInstance(accessKeyId, secretAccessKey);
//// ファイルを取得
const data = s3.getObject(bucketName,objectName);
//// 格納フォルダを指定
var destfolder = DriveApp.getFolderById(folderId);
/// フォルダ内にファイル作成
destfolder.createFile(data);
}
フォルダIDとは
folderId
に代入するフォルダIDについて、URLの以下の画像の赤い部分が、フォルダIDになります。
詳細は以下を確認ください。
実行
実行すると、IDで指定したフォルダに、ファイルが作成されました。
おわりに
S3ライブラリにファイルをダウンロードする関数がなかったため、若干手間取りました。
わかってしまえばシートの操作がない分、以前よりかなり簡素な内容になりました。
本記事がどなたかの参考になれば幸いです。