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

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

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

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

Q&A

解決済

2回答

6758閲覧

GASでファイル名を指定して、スプレッドシートを取得する方法

vpp.ysk

総合スコア10

Google Apps Script

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

0グッド

2クリップ

投稿2018/06/18 04:06

gasを使って、他のスプレッドシートにデータを反映させていますが、
SpreadsheetApp.openById("ファイルid")で、idをもとにスプレッドシートを取得するのではなく、
フォルダ名、ファイル名でからスプレッドシートを取得したいです。

例)
フォルダA(id:aaaa)
∟フォルダa-ファイル1
∟フォルダb-ファイル2

フォルダAについては、idで取得。→それ以下のものは、名前を元に取得。

idはわからないこともないのですが、同じ形式で多くのフォルダ、ファイルを管理するため、
名前で取得できた方が、コードを書く手間が省略できると考えております。

自分で調べてみましたが、ファイル名の一覧を取得するなど、
希望に見合うものが見つからなかったため、こちらで質問させていただきました。
ご回答いただけると助かります。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ファイルの一覧などはGoogleDriveAPIを使ってください。

var folder=DriveApp.getFolderById(id);
folder=folder.getFoldersByName("フォルダ名");
var file=folder.getFilesByName("ファイル名");
SpreadsheetApp.openById(file.getId());

DriveApp.searchFilesを使う手段もあります。

投稿2018/06/18 05:24

sora_kumo

総合スコア55

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

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

papinianus

2018/06/18 05:28

getFoldersByNameやgetFilesByNameはFolderIteratorやFileIteratorが返されるように思うのですが?
sora_kumo

2018/06/18 05:32

そうですね。 .next()を入れ忘れました。 folder.getFoldersByName("フォルダ名").next(); みたいな感じで使ってください。
vpp.ysk

2018/06/18 07:54

ご回答ありがとうございます。 .next()を入れると期待通りになりました。
guest

0

フォルダがなぜIDなのか、よくわからないので、フォルダもファイルも名前から取るやつをテスト的に書きました。

なお、同じ名前のフォルダとか、同じ名前のファイルとか、フォルダの階層とかは考えてません。
その名前のファイル、フォルダの最初の1つを取る感じです。

javascript

1function getFile(dirname, filename) { 2 var dirs = DriveApp.getFoldersByName(dirname); 3 if(!dirs.hasNext()) {return undefined;} 4 var dir = dirs.next(); 5 var files = dir.getFilesByName(filename); 6 if(!files.hasNext()) {return undefined;} 7 return files.next(); 8} 9 10function openSheet() { 11 var file = getFile("フォルダa", "ファイル1"); 12 var spreadsheet = SpreadsheetApp.open(file); 13}

投稿2018/06/18 05:26

papinianus

総合スコア12705

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

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

vpp.ysk

2018/06/18 08:03

フォルダAと全く同じ内容のフォルダが他にも複数あり、ドライブ全体では、フォルダ名、ファイル名の重複があるため、最上位のフォルダはIDで指定したいと思いました。 フォルダA(id:aaaa) ∟フォルダa-ファイル1 ∟フォルダb-ファイル2 フォルダB(id:bbbb) ∟フォルダa-ファイル1 ∟フォルダb-ファイル2 というような感じです。
papinianus

2018/06/18 09:53

* 同一階層ではフォルダ名の重複は起こらないこと * また原理的に名前でフォルダが取得できること を考慮すると、名前でとったり、IDでとったりするのは変に思ったというだけです。 また、提示した案では1階層にしか対応していませんが、多少手を入れれば多段階のフォルダ階層に対応するのは容易だと思っています(dirnameを配列でもつなりして、再帰とかループすればいいので)
vpp.ysk

2018/06/19 00:54

なるほど。 ご解説いただき、ありがとうございます。 まだまだ理解が浅いので、参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問