アプリスクリプトで「不明」の基準に基づいてフィルタリングすることにより、Googleドライブからファイルを取得するにはどうすればよいですか?

d'natsu

GASを使用してGoogleドライブからファイルのリストを取得したいしたがって、空の所有者に基づいたファイルのリストが必要です。共有ドライブに作成するファイルの場合、所有者は存在しません。所有者名を強制しようとすると、エラーが発生します。

たとえば、次のようになります。

file.getOwner().getName();

ファイルリストから取得することはできません。空の所有者に基づいてフィルターを追加しようとしました不明と言いたいのですが。

function getfilesUnknown () {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var st = ss.getActiveSheet ();
  var files = DriveApp.getFiles ();
  var counter = 0;
  while (files.hasNext () && counter <21) {
    var file = files.next ();
    var data = [
      file.getName (),
      file.getUrl (),
      file.getOwner ()? file.getOwner (). getName (): 'Unknown'
    ];
    var filter = data.filter (v => v [2] === 'Unknown');
    counter ++;
    st.appendRow (filter);
  }
}

ただし、ファイルのリストは取得されません。

フィルターインはお勧めできないようです。あるいは、ここの人々は別の解決策を持っているかもしれません。

マリオス

これが最善のアプローチかどうかはわかりません。

ただしfile.getOwner().getName()、所有者が存在しない場合はここでエラーが発生するため、try ... catch使用してエラーをキャッチしてみてください。

つまり、エラーパスUnknownがある場合は、ファイル所有者の名前を渡します。

function getfilesUnknown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var st = ss.getActiveSheet();
  var files = DriveApp.getFiles();
  var counter = 0;
  var data = [];
  while (files.hasNext() && counter<21) {
    var file = files.next();
    
    try{
      data.push([file.getOwner().getName()]);
    }
    catch(e){
      data.push(['Unknown']);
    }             
    counter++; 
  }
  
  st.getRange(st.getLastRow()+1,1,data.length,1).setValues(data);
}

コードはあまり最適化されていないことに注意してください。data配列に情報を追加しますが、特定の値のみでフィルタリングします。したがって、コードの速度が低下するため、他のアイテムを使用する必要はありません。

もう1つの注意点は、appendRow繰り返し使用していることです。これはお勧めできません。代わりsetValuesに、forループの外側を1回使用します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ