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]
コメントを追加