我嘗試創建一個腳本來計算我的檔案。
目前我已經寫了這個腳本:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("GDrive");
sheet.clear();
for (var i = 5; i <= 13; i ) {
//var i = 5;
if (i == 5) {var sFT = "presentation";}
if (i == 6) {var sFT = "form";}
if (i == 7) {var sFT = "audio";}
if (i == 8) {var sFT = "video";}
if (i == 9) {var sFT = "archive";}
if (i == 10) {var sFT = "drawing";}
if (i == 11) {var sFT = "shortcut";}
if (i == 12) {var sFT = "folder";}
if (i == 13) {var sFT = "site";}
if (i == 5) {var sTXT = "GPr?sentation";}
if (i == 6) {var sTXT = "GForm";}
if (i == 7) {var sTXT = "Audio";}
if (i == 8) {var sTXT = "Video";}
if (i == 9) {var sTXT = "Archive (ZIP)";}
if (i == 10) {var sTXT = "Zeichnungen";}
if (i == 11) {var sTXT = "Links";}
if (i == 12) {var sTXT = "Verzeichnisse";}
if (i == 13) {var sTXT = "GSite";}
if (i == 5) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.MICROSOFT_POWERPOINT_LEGACY '" or mimeType contains "' MimeType.MICROSOFT_POWERPOINT '" or mimeType contains "' MimeType.GOOGLE_SLIDES '")');
}
if (i == 6) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.GOOGLE_FORMS '")');
}
if (i == 7) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.Audio '")');
}
if (i == 8) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.video '")');
}
if (i == 9) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.ZIP '")');
}
if (i == 10) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.drawing '")');
}
if (i == 11) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.Links '")');
}
if (i == 12) {
var files = DriveApp.searchFolders('"me" in owners');
}
if (i == 13) {
var files = DriveApp.searchFiles('"me" in owners and (mimeType contains "' MimeType.GSite '")');
}
let count = 0;
sheet.getRange(i,2).setValue(sTXT);
SpreadsheetApp.flush();
while (files.hasNext()) {
var file = files.next();
count = count 1;
}
sheet.getRange(i,1).setValue(i);
sheet.getRange(i,2).setValue(sTXT);
sheet.getRange(i,3).setValue(count);
SpreadsheetApp.flush();
}
}
鏈接到我的示例檔案:https : //docs.google.com/spreadsheets/d/1cR3EyK1WgF8MLniSu_O4QFUzvPQ-x3Gq9G6Y40cZr3s/edit?usp=sharing
有誰現在為什么找不到我的腳本的任何檔案:音頻、視頻、存檔 (ZIP)、Zeichnungen、鏈接、GSite,但我有一些來自此類別的檔案。當我搜索瀏覽器時,我可以找到所有檔案。
有人可以幫忙嗎?
問候
uj5u.com熱心網友回復:
嘗試一些遞回
function countallfiles() {
let folder = DriveApp.getFolderById('1obWyAZl0vDlwbNqcGBq7Nt38qzusWt1d');
getAllFilesAndFolders(folder);
Logger.log(n);
}
var n = 0;
function getAllFilesAndFolders(folder) {
let files = folder.getFiles();
while (files.hasNext()) {
let file = files.next();
if (file.getOwner().getName() == 'Your Name') {
n ;
}
}
let subfolders = folder.getFolders();
while (subfolders.hasNext()) {
getAllFilesAndFolders(subfolders.next());
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想要檢索您設定的每個 mimeType 的檔案數。
- 您想使用 Google Apps 腳本實作此目的。
問題及解決方案:
關于您的問題Does anyone now why my script is not found any files for: Audio, Video, Archive (ZIP), Zeichnungen, Links, GSite,當您測驗以下腳本時,
var yourMimeTypes = [MimeType.MICROSOFT_POWERPOINT_LEGACY, MimeType.MICROSOFT_POWERPOINT, MimeType.GOOGLE_SLIDES, MimeType.GOOGLE_FORMS, MimeType.Audio, MimeType.video, MimeType.ZIP, MimeType.drawing, MimeType.Links, MimeType.FOLDER, MimeType.GSite];
console.log(yourMimeTypes)
得到以下結果。
[
'application/vnd.ms-powerpoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/vnd.google-apps.presentation',
'application/vnd.google-apps.form',
undefined,
undefined,
'application/zip',
undefined,
undefined,
'application/vnd.google-apps.folder',
undefined
]
不幸的是,在當前階段,MimeType.Audio, MimeType.video, MimeType.drawing, MimeType.Links, MimeType.GSitemimeTYPEs 的列舉中沒有 of的值。Ref我認為這是您的問題的原因why my script is not found any files for: Audio, Video, Archive (ZIP), Zeichnungen, Links, GSite。
例如,從您的腳本中,我猜想您可能希望按如下方式使用 mimeTypes。
- 關于
MimeType.Audio,我認為您可能想要檢索 mimeTypes 包括audio. - 關于
MimeType.video,我認為您可能想要檢索 mimeTypes 包括video. - 關于
MimeType.ZIP,在這種情況下,我認為 mimeType 與application/zip. 就像application/x-zip-compressed。因此,在這種情況下,zip檢索包括的 mimeTypes 。 - 關于
MimeType.drawing,我認為您可能想要檢索MimeType.GOOGLE_DRAWINGS. - 關于
MimeType.Links,我認為您可能想要檢索MimeType.SHORTCUT. - 關于
MimeType.GSite,我認為您可能想要檢索MimeType.GOOGLE_SITES.
當這些反映在腳本中時,它變成如下。
示例腳本:
該腳本使用 Drive API。因為檔案串列是使用 Drive API 檢索的。因此,請在 Advanced Google services 中啟用 Drive API。并且,請檢查obj. 請根據您的實際情況進行修改。
function sample() {
// Please set the display names and mimeTypes.
// I created this object by guessing from your script.
const obj = {
"GPr?sentation": [MimeType.MICROSOFT_POWERPOINT_LEGACY, MimeType.MICROSOFT_POWERPOINT, MimeType.GOOGLE_SLIDES],
"GForm": [MimeType.GOOGLE_FORMS],
"Audio": "audio",
"Video": "video",
"Archive (ZIP)": "zip",
"Zeichnungen": [MimeType.GOOGLE_DRAWINGS],
"Links": [MimeType.SHORTCUT],
"Verzeichnisse": [MimeType.FOLDER],
"GSite": [MimeType.GOOGLE_SITES],
};
// 1. Retrieve a list of all files and folders from your Google Drive by the search query of `"me" in owners`.
let list = [];
let pageToken = "";
do {
const res = Drive.Files.list({
q: `"me" in owners`, // I couldn't understand whether you want to use `trashed=false`. If you want to use, please add it.
fields: "nextPageToken,items(mimeType)",
pageToken: pageToken,
maxResults: 1000,
// includeItemsFromAllDrives: true, // If you want to search the files from the shared Drive, please use this.
// supportsAllDrives: true, // If you want to search the files from the shared Drive, please use this.
});
if (res.items.length > 0) list = [...list, ...res.items.map(({ mimeType }) => mimeType)];
pageToken = res.nextPageToken;
} while (pageToken);
const mimeTypesObj = list.reduce((o, e) => (o[e] = o[e] ? o[e] 1 : 1, o), {});
const mimeTypesAr = Object.entries(mimeTypesObj);
// 2. Create an array for putting to the sheet.
const values = Object.entries(obj).map(([k, v]) => {
if (Array.isArray(v)) {
return [k, v.reduce((c, e) => c = mimeTypesObj[e] || 0, 0)];
}
return [k, mimeTypesAr.reduce((c, [kk, vv]) => c = kk.includes(v.toLocaleLowerCase()) ? vv : 0, 0)];
});
// 3. Put the values on the sheet.
// In this case, the values are put from "B5" from your script.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("GDrive");
sheet.clear();
sheet.getRange(5, 2, values.length, values[0].length).setValues(values);
}
流動:
該腳本的流程如下。
- 通過搜索查詢從您的 Google Drive 中檢索所有檔案和檔案夾的串列
"me" in owners。- 我不明白你是否要使用
trashed=false. 如果您想使用它,請添加它。
- 我不明白你是否要使用
- 創建一個用于放入作業表的陣列。
- 將值放在紙上。
參考:
- 列舉 MimeType
- 檔案:串列
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407254.html
標籤:
