【GAS基礎講座 14.15.】 ファイル一覧、ファイルのコピー 、一覧をスプレッドシートに出力

Googleドライブ

GAS基礎講座一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【GAS】既存のPDFを現在のシートの内容で更新する方法
  • GASで既存のPDFを更新することができます。
  • ファイルIDの取得方法や設定方法がわかります。
  •  

    ファイル一覧の取得

    今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

     

     

    • ファイルの一覧をスプレッドシートに出力できます。
    • Google ドライブでファイル一覧の取得方法がわかります。
    • ファイルのコピー方法がわかります。

    なのでサクッとマスターして

    と答えてあげてください。

     

    動画はこちら

    スクリプト

    
    function getTheFiles(){
      
      var dApp = DriveApp;
      var folderIter = dApp.getFoldersByName("Download Pictures");
      var folder = folderIter.next();
      
      var largeFolder = folder.getFoldersByName("large").next();
      var smallFolder = folder.getFoldersByName("small").next();
      
      
      var filesIter = folder.getFiles();
      while( filesIter.hasNext() ){
        var file = filesIter.next();
        var filename = file.getName();
        var filesize = file.getSize()/1024;
        
        if( filesize > 100 ){
          file.makeCopy(largeFolder);
        }else{
          file.makeCopy(smallFolder);
        }
      }
    }
    
    
    
    function mytest(){
      
      var x = 20;
      while(x){
        
        Logger.log(x);
        x = x-5;
      }
      
    }
    
    

     

     

    スプレッドシートに出力

    取得した一覧を

    • Google Driveのファイル一覧をスプレッドシートに出力できます。

     

    こんな感じで
    答えてあげてください

     

    動画はこちら

     

     

    スクリプト

    
    function getTheFiles(){
      
      var dApp = DriveApp;
      var folderIter = dApp.getFoldersByName("Download Pictures");
      var folder = folderIter.next();
      
      var largeFolder = folder.getFoldersByName("large").next();
      var smallFolder = folder.getFoldersByName("small").next();
      
      var ss  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      
      var i = 1;
      
      var filesIter = folder.getFiles();
      while( filesIter.hasNext() ){
        var file = filesIter.next();
        var filename = file.getName();
        var filesize = file.getSize()/1024;
        
        ss.getRange(i, 1).setValue(filename);
        ss.getRange(i, 2).setValue(filesize);
        
        
        if( filesize > 100 ){
          file.makeCopy(largeFolder);
        }else{
          file.makeCopy(smallFolder);
        }
     
        i++//i=i+1;
        
        
      }
      
    

    最後までご覧いただきありがとうございます。

    つぎはこちら

    【GAS】指定したGoogleカレンダーの予定をLINEに送信する方法
    指定したカレンダーの予定のみLINEに通知されるようになります。 以前作成したスクリプトの変更方法がわかります。

    GAS基礎講座一覧

    コメント

    1. 堺豪毅 より:

      質問をさせて下さい。

      最初のwhile分の説明のところです。

      function mytest() {
      let x = 20;
      while (x) {
      x = x – 1;//①
      console.log(x);
      x = x – 1;//②

      }
      }

      ①の状態でconsole.logをすると0から19と出力されます。
      ②の状態でconsole.logをすると1から20と出力されます。
      これは、どうしてこうなるのですか。
      不思議に思いましたので質問をさせてもらいました。

      宜しくお願い致します。

      • hiroshi より:

        堺さん、コメントありがとうございます。
        x の初期値を 1にすればわかりやすいと思います。
        let x= 1;

        while(x)は、xが0になるとループを抜けます。

        ①→ 0になるので、ログは0 で ループを抜ける
        ②→ ログは 1 で ②で0となりループを抜ける

        実際に、1ステップづつ追っかけるとわかると思います。

        • 堺豪毅 より:

          返事ありがとうございます。
          これはconsole.logの前にx = x – 1;を書きますと1を引いてから1回目のループが始まる。
          console.logの後にx = x – 1;を書きますと1を引く前に1回目が始まる。
          この違いですね。
          ありがとうございました。

    2. 堺豪毅 より:

      何度も質問をしてすいません。

      function getTheFiles() {
      let dApp = DriveApp;
      let folderIter = dApp.getFoldersByName(‘Download Pictures’);
      let folder = folderIter.next();
      console.log(folder);

      これで出力しますと
      { toString: [Function],
      getOwner: [Function],
      getEditors: [Function],
      こういう文字列がいっぱい出力されます。

      次に.getName()を追加しますとフォルダー名が表示されますが次の出力で何度もやり直してもエラーしか出ません。

      function getTheFiles() {
      let dApp = DriveApp;
      let folderIter = dApp.getFoldersByName(‘Download Pictures’);
      let folder = folderIter.next().getName();
      console.log(folder);

      let filesIter = folder.getFiles();
      while (filesIter.hasNext()) {
      let file = filesIter.next();
      console.log(file);

      サンプルをコピーしても同じような結果になります。
      どうしたらよいですか。

      教えて下さい。
      お願します。

      • hiroshi より:

        動画の通りやってみて、うまくいかない箇所の
        タイムスタンプ(秒)を教えてください。

    タイトルとURLをコピーしました