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

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

新規登録して質問してみよう
ただいま回答率
85.51%
Google Apps Script

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

Q&A

解決済

1回答

9372閲覧

google sheets で同じフォルダ内のCSVファイル読み込み

zanjibar

総合スコア206

Google Apps Script

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

0グッド

0クリップ

投稿2016/10/17 00:17

編集2016/10/22 10:42

google document の spreadsheets のscript についての質問です。

spreadsheets があるフォルダにあるCSVファイルの内容を読み込んで、spreadsheets の特定のsheet にそのCSVファイルを貼り付けるscript はどう書くのでしょうか? サンプルがいっぱいありそうなのですが、すぐには見つかりませんでした。よく使われていそうなscript をぜひ教えてください。

CSV読み込みをしましたが、使えません。

そこで、

  • file メニューからの読み込みで、CSVを読み込むのを、script で書くことは、可能なんでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

対象となるtest.csvという名前のcsvファイルがteratailというフォルダに入っていて、あるスプレッドシートのシート1という名前のシートにインポートするという前提です。スクリプトは特定のスプレッドシートシートにバウンドされているとします。流し込みたいスプレッドシートはどこに置いてもかまいません。

var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("シート1"); function importData() { // フォルダー名 var folderName = "teratail"; // ファイル名 var fileName = "test.csv"; var folders = DriveApp.getFoldersByName(folderName); while (folders.hasNext()) { var folder = folders.next(); if (folder.getName() == folderName) { // フォルダーID取得 var folderId = folder.getId(); var files = DriveApp.getFolderById(folderId).getFiles(); while (files.hasNext()) { var file = files.next(); if (file.getName() == fileName) { // 対象CSVファイルがUTF-8なら("Shift_JIS")ではなく、単に()とする var data = file.getBlob().getDataAsString("Shift_JIS"); var csv = Utilities.parseCsv(data); sh.getRange(1,1,csv.length,csv[0].length).setValues(csv); } } } } }

フォルダーIDはフォルダー名から探し出していますが、自力で調べればすぐに分かるので、実際は下記のようにするほうが良いかなあとは思います。

var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("シート1"); function importData() { var folderId = "自力で調べたフォルダーID"; var fileName = "test.csv"; var files = DriveApp.getFolderById(folderId).getFiles(); while (files.hasNext()) { var file = files.next(); if (file.getName() == fileName) { var data = file.getBlob().getDataAsString("Shift_JIS"); var csv = Utilities.parseCsv(data); sh.getRange(4,1,csv.length,csv[0].length).setValues(csv); } } }

DriveAppクラスやUtilitiesクラスについて目を通せばいろいろ出てくるかと思います。

投稿2016/10/17 07:05

true

総合スコア440

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

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

zanjibar

2016/10/17 07:07

ありがとうございます。早速確認します。
zanjibar

2016/10/22 01:41

google apps script はじめてさわるので結構難儀しています。
zanjibar

2016/10/22 10:39

セルに改行がはいっていると、2行になります。使えません。 ファイルメニューからのセルへのインポートはできないのでしょうか?
zanjibar

2016/10/22 12:42

google apps で、エクセルと同等のことをするのは非現実的なので、諦めました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問