質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

4061閲覧

S3バケット内のCSVファイルをスプレッドシートに出力する(GAS使用)

noah_is_over

総合スコア5

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/09/30 10:02

編集2020/10/02 03:29

# 前提・実現したいこと
AWS S3に保存しているCSVファイルをgoogle スプレッドシートに出力できないかと考えています。
以前の質問内容にもありますが、用いたデータは下記のようなCSVファイルです。
このようなデータが1日1~2件ほどs3のバケットに (年-月-日-時間.csv) の名前で保存、蓄積されていきます。
これらをすべて上から順にスプレッドシートに出力したいのですが、解決策が浮かびません。
現在はGASを調べつつ作業していて、名前を指定したファイルのみ一件をシートに出力することは成功しています。
スプレッドシートからS3へのPUTはweb上に参考資料が多いですが、GETの操作が乏しいため投稿した次第です。

以前の質問内容はご意見を参考に解決することができました。ありがとうございます。

S3内のcsvファイル

1, *****, 2020/09/25, 15:11, 101, 62, 82, 65, 36.44

データは左から
1(フラグ用で不変),個人名,日付,時間,最高血圧,最低血圧,平均血圧,心拍数,体温

ソースコード

GAS

1 2function getS3File() { 3 // S3の接続情報 4 var awsAccessKeyId = ""; 5 var awsSecretKey = ""; 6 var s3baket = ""; 7 var s3File = "test.csv"; 8 9 //グーグルのドライブの保存先フォルダID 10 var folderId = ""; 11 12 // S3に接続してファイルをGET 13 var s3 = S3.getInstance(awsAccessKeyId, awsSecretKey); 14 var fromS3 = s3.getObject(s3baket, s3File); 15 16 // ドライブに保存 17 var destfolder = DriveApp.getFolderById(folderId ); 18 var file = destfolder.createFile(fromS3); 19 dataImport(file); 20} 21 22// CSVファイルのシートへの書き出し 23function dataImport( file ) { 24 var data = file.getBlob().getDataAsString("utf8"); 25 var newDataList = Utilities.parseCsv(data, '\,'); 26 27 //書き込む対象のSpread Sheetを定義 28 var ss = SpreadsheetApp.getActiveSpreadsheet(); 29 var sh = ss.getActiveSheet(); 30 var lastRow = sh.getDataRange().getLastRow(); 31 32 // データの出力 33 sh.getRange(1, 1, newDataList.length, newDataList[0].length).setValues(newDataList); 34} 35 36

上記のコードから得た出力例
![上記コードから得られた出力例(b97f336b6b82305b671bb5683ffc14d9.png)

使用ライブラリ等 

ライブラリキー:MB4837UymyETXyn8cv3fNXZc9ncYTrHL9 バージョン4
詳細 : https://engetc.com/projects/amazon-s3-api-binding-for-google-apps-script/

マニフェストファイルのoauthscopes
"https://www.googleapis.com/auth/spreadsheets.currentonly",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/drive"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

試行錯誤の結果s3から直接引き出すのではなく一度googledriveに保存してからスプシに書き込む構成としました。
その場合はAPIが豊富にあるため簡単です。

投稿2020/10/19 00:57

noah_is_over

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問