【GAS】Googleドライブのファイル名とURLをスプレッドシートにとってくるスクリプト【ちょいスクリプト】

スポンサーリンク
広告

GlideやGoogle Spread Sheet の操作

Glideで写真のURLをとってSpread Sheetに張りたい時などにいちいちURLをコピーするのがめんどくさかったりします。分割されているファイルの中をみたい時なども。。

Google Drive の フォルダID

https://drive.google.com/drive/u/1/folders/フォルダID

ってなっているそうです。 なんか意味のない文字列です。例えば、1pn0N1PIPvis–8cSBva2f9w322JlSSADPpなんてなっている部分です。

GASのプログラム自体はこんな感じです。

function Tom_getFileListInFolder() {
//フォルダIDを指定して、SpreadSheet の シート1に、ファイル名と、URLを取得して、SpreadSheet に書込み
var folder_id = ‘フォルダIDを入れる’; //フォルダIDを指定する
folder = DriveApp.getFolderById(folder_id);
files = folder.getFiles();
list = []; //この変数のファイル名・URLが入っていきます
rowIndex = 1; // The starting row of a range.
colIndex = 1; // The starting row of a column.
var ss;
var sheet;
var range;
sheetName = ‘シート1’; //デフォルトのシート名がシート1です。

while(files.hasNext()) {
var buff = files.next();
list.push([buff.getName(), buff.getUrl()]);
};

ss = SpreadsheetApp.getActive();
sheet = ss.getSheetByName(sheetName);
range = sheet.getRange(rowIndex, colIndex, list.length, list[0].length);

// 対象の範囲にまとめて書き出します
range.setValues(list);
}

リファレンス

DriveApp  File SpreadSheetApp

コピペの注意 時々、全角のスペースが入ったり、(や_が全角になったりするので注意してね。なぜかわからないけど。。

使い方

まずは、フォルダIDを調べましょう。 Googleドライブのどのフォルダか? URLのところのなんだかわからない文字列です。

つぎにスプレッドシートを作ります。

ツールのスクリプトエディタへ行きます。そして、上のスクリプトをコピペで張り付けます。

さっき調べたフォルダIDも、コピペで貼り付けます。

そして、虫の右隣りの▼の印を押すと、実行されます。

が・・・承認がいるんです。Googleアカウントでの承認になりますが。。ちょっとややこしいので、このスライドを見てください。

スライドショーには JavaScript が必要です。

Googleさんは、自分のサービスなのに、危険といいます(笑) が、危険ではありませんので。。たぶん(笑)

で。。集計されると、スプレッドシートの方に、こんな風に ファイル名とURLが並びます。このURLの中に、またファイルIDが入っているんで、ここからファイルを開けたりするのもできます。

Cloudならではの、メンドクササかな?

このあたりは。。

Windows だと

>Dir > filelist.txt

ってうてば、こういうの簡単にでてきますし

Linuxでも

$ls -la > filelist.txt

って一発なんですけどね。

もう少し汎用のものも作ってあります。

【GAS】Google Driveのフォルダ内のファイル名、URLを取得するSpreadSheet 汎用版【コピペプログラミング】
コピペプログラミング このスクリプトを、SpreadSheetのマクロ風にメニューに表示させて、フォルダのURLをポップアップのメッセ...

コメントを残していただけるとありがたいです

コメント

  1. 通りすがり より:

    参考にさせていただいております。ありがとうございます。
    質問なのですが、

    >range = sheet.getRange(rowIndex, colIndex, list.length, list[0].length);

    こちらの部分でエラー(undefined からプロパティ「length」を読み取れません。)
    となってしまうのですが、こちらの原因はお分かりになりますでしょうか?

    コピペで試し運用をさせていただいている弱者なので、
    レベルの低い質問でしたら申し訳ありません。
    お助けをいただけると幸いですmm

  2. tom2rd より:

    listにはファイル名・URLの配列が入っていて、listには行数、list[0]は列数が入ってくるはずで、それぞれ、ファイル数と2(ファイル名とURLだから2)になるんですが。。一回、実行の▼と、関数の間にある 虫のマークを押してみて、listに値が入っているか見てみてください。もし、入っていない場合は、そのフォルダーに、たぶん、ファイルが1つも入っていないので、listに何も値がなくてエラーになるんだと思います。 

    ファイルが入っているフォルダーIDを使ってみるとどうでしょうか??

    (エラー処理を書くと本当はいいんでしょうね。。)

  3. 通りすがり より:

    ありがとうございます!!!
    おっしゃる通り、直下フォルダにはファイルがなかったからでしたmm
    勝手にネストされた配下の物は取得できるのだと勘違いしておりました。

    大変助かりました。ありがとうございます。これからも参考にさせていただきます。

Loading Facebook Comments ...
%d人のブロガーが「いいね」をつけました。