我有一個代碼,可以從 Google Drive 上的不同檔案夾中提取所有電子表格檔案,并將它們列在電子表格中。我希望此代碼還將資料寫入電子表格中寫入的每個檔案的單元格 U7 中。我試過這個
var 檔案 = fold.getFilesByType(MimeType.GOOGLE_SHEETS); var comentario = files.SpreadsheetApp.getSheetByName("FICHA").getRange("U7").getValue();
(請參閱 var 注釋)但是當我運行它時,我在第 12 行收到錯誤,型別錯誤:“無法讀取未定義的屬性“0”。(請參閱下面附加的 [1] 和 [2])我已經運行了沒有 var 的代碼評論,在這種情況下,它運行順利,我沒有收到任何錯誤,所以我真的不明白發生了什么。
如果有人知道我如何修改我的代碼以便讓它為評論列中的每個檔案撰寫 U7,那就太好了。非常感謝您!
var ss = SpreadsheetApp.getActiveSpreadsheet();
var carpetasSheet = ss.getSheetByName("carpetas");
var lista_carpetas = carpetasSheet.getRange("A2:A" carpetasSheet.getLastRow()).getValues();
var lista_carpetas_ok = lista_carpetas.filter(([a]) => a);
var sheet = ss.getSheetByName("data");
sheet.clear();
ss.appendRow(["Parent Folder","Folder", "Name", "Update","URL", "Comentarios"]);
for (var i = 0; i < 5; i ) {
console.log(lista_carpetas_ok[i][0]) // Here, you can see the folder ID in the log.
var folderid = lista_carpetas_ok[i][0];
try {
var parentFolder =DriveApp.getFolderById(folderid);
listFiles(parentFolder,parentFolder.getName())
listSubFolders(parentFolder,parentFolder.getName());
} catch (e) {
Logger.log(e.toString());
}
}
function listSubFolders(parentFolder,parent) {
var childFolders = parentFolder.getFolders();
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
Logger.log("Fold : " childFolder.getName());
listFiles(childFolder,parent)
listSubFolders(childFolder,parent "|" childFolder.getName());
}
}
function listFiles(fold,parent){
var data = [];
var files = fold.getFilesByType(MimeType.GOOGLE_SHEETS);
var comentario = files.SpreadsheetApp.getSheetByName("FICHA").getRange("U7").getValue();
while (files.hasNext()) {
var file = files.next();
data = [
parent,
fold.getName(),
file.getName(),
file.getLastUpdated(),
file.getUrl(),
comentario,
];
ss.appendRow(data);
}
}
}```
[1]: https://i.stack.imgur.com/3ksfP.png
[2]: https://i.stack.imgur.com/wDO8B.png
uj5u.com熱心網友回復:
回答問題 1
您的第一個問題如下。
但是當我運行它時,我在第 12 行收到錯誤,型別錯誤:“無法讀取未定義的屬性“0”。(請參閱下面附加的 [1] 和 [2])我在沒有 var 注釋的情況下運行了代碼,在這種情況下它運行順利,我沒有收到任何錯誤,所以我真的不明白發生了什么。
從您的腳本中,我認為您的問題cannot read property "0" of undefined.可能是由于for (var i = 0; i < 5; i ). 因為比如陣列的長度lista_carpetas_ok小于5的時候,就會出現這樣的錯誤。例如,當 的長度lista_carpetas_ok大于5時,不會發生錯誤。
如果這個問題解決了,那么下面的修改呢?
從:
for (var i = 0; i < 5; i ) {
到:
for (var i = 0; i < lista_carpetas_ok.length; i ) {
回答問題 2
你的第二個問題如下。
如果有人知道我如何修改我的代碼以便讓它為評論列中的每個檔案撰寫 U7,那就太好了。
從您的腳本中,我認為在函式中,需要修改listFiles這一行。var comentario = files.SpreadsheetApp.getSheetByName("FICHA").getRange("U7").getValue();因為在你的腳本中,files是fileIterator。所以在這種情況下,會發生錯誤。修改此錯誤后,變為如下。
從:
var files = fold.getFilesByType(MimeType.GOOGLE_SHEETS);
var comentario = files.SpreadsheetApp.getSheetByName("FICHA").getRange("U7").getValue();
while (files.hasNext()) {
var file = files.next();
到:
var files = fold.getFilesByType(MimeType.GOOGLE_SHEETS);
while (files.hasNext()) {
var file = files.next();
var comentario = SpreadsheetApp.open(file).getSheetByName("FICHA").getRange("U7").getValue();
參考:
- getFilesByType(mimeType)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456348.html
