Lấy tên & hyperlink các file con từ 1 folder

Liên hệ QC

MrKhoa3108

Thành viên mới
Tham gia
22/10/13
Bài viết
25
Được thích
4
Em có suy nghỉ tích cực và cũng mong anh/chị nào đã từng làm được share giúp em cũng như ai cần. Ý tưởng của em là lấy ra các hypelink và tên ảnh trong drive của google.
Bình thường thì Excel có thể lấy link từ folder dưới dạng hyperlink nhưng không biết trên google spreadsheets có lấy được không cả nhà.
Ai ngang qua mà giỏi phần này xem có làm được không nếu ko làm được cho em 1 comment khỏi e mất ăn mất ngủ.
VD: Giống như hình có 4 Pic=> Xuất tên 4 Pic đó ra file kèm hyperlink cảu từng ảnh đó luôn
218284
 
Mã:
function listFolderContents() {
  var foldername = 'ten-thu-muc';
  var folderlisting = 'danh sach file cua thu muc ' + foldername;
 
  var folders = DriveApp.getFoldersByName(foldername)
  var folder = folders.next();
  var contents = folder.getFiles();
 
  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  sheet.appendRow( ['name', 'link'] );
 
  var file;
  var name;
  var link;
  var row;
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    sheet.appendRow( [name, link] );     
  } 
}
Có phải code này không mọi người
 
218294

Em chạy code nó không ra cái gì, mọi người xem code có bị gì không giúp em với
 
Em hiểu được nguyên nhân do đâu rồi- Cảm ơn mọi người
 
Bạn ơi, code kia bạn tự làm ạ, có thể hướng dẫn mình cách dùng được ko.
 
Có code trên rồi mà, vào tools/ create script
 
bác có code nào mà chèn kết quả vào 1 sheet trên 1 file đã được định sẵn trên google driver không?
Ko biết bạn còn cần không, mình ko tinh chỉnh cái này vì không có nhu cầu nhiều. nếu cần hỗ trợ cụ thể thì bạn inbox riêng nhé.

1570677656711.png

Mã:
/**
Source here: https://techink.site/list-files-folders-google-drive-google-sheets/
 * Google Apps Script - List all files & folders in a Google Drive folder, & write into a speadsheet.
 *    - Main function 1: List all folders
 *    - Main function 2: List all files & folders
 *
 * Hint: Set your folder ID first! You may copy the folder ID from the browser's address field.
 *       The folder ID is everything after the 'folders/' portion of the URL.
 *
 * @version 1.0
 * @see     https://github.com/mesgarpour
 */
 
// TODO: Set folder ID
var folderId = '0B8itojOPKoRbMWlLQ0NSdTFPZDQ';
 
// Main function 1: List all folders, & write into the current sheet.
function listFolers(){
  getFolderTree(folderId, false);
};

// Main function 2: List all files & folders, & write into the current sheet.
function listAll(){
  getFolderTree(folderId, true);
};

// =================
// Get Folder Tree
function getFolderTree(folderId, listAll) {
  try {
    // Get folder by id
    var parentFolder = DriveApp.getFolderById(folderId);
    
    // Initialise the sheet
    var file, data, sheet = SpreadsheetApp.getActiveSheet();
    sheet.clear();
    sheet.appendRow(["Full Path", "Name", "Date", "URL", "Last Updated", "Description", "Size"]);
    
    // Get files and folders
    getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);
    
  } catch (e) {
    Logger.log(e.toString());
  }
};

// Get the list of files and folders and their metadata in recursive mode
function getChildFolders(parentName, parent, data, sheet, listAll) {
  var childFolders = parent.getFolders();
 
  // List folders inside the folder
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    // Logger.log("Folder Name: " + childFolder.getName());
    data = [
      parentName + "/" + childFolder.getName(),
      childFolder.getName(),
      childFolder.getDateCreated(),
      childFolder.getUrl(),
      childFolder.getLastUpdated(),
      childFolder.getDescription(),
      childFolder.getSize()
    ];
    // Write
    sheet.appendRow(data);
    
    // List files inside the folder
    var files = childFolder.getFiles();
    while (listAll & files.hasNext()) {
      var childFile = files.next();
      // Logger.log("File Name: " + childFile.getName());
      data = [
        parentName + "/" + childFolder.getName() + "/" + childFile.getName(),
        childFile.getName(),
        childFile.getDateCreated(),
        childFile.getUrl(),
        childFile.getLastUpdated(),
        childFile.getDescription(),
        childFile.getSize()
      ];
      // Write
      sheet.appendRow(data);
    }
    
    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll); 
  }
};
 
Ko biết bạn còn cần không, mình ko tinh chỉnh cái này vì không có nhu cầu nhiều. nếu cần hỗ trợ cụ thể thì bạn inbox riêng nhé.

View attachment 226357

Mã:
/**
Source here: https://techink.site/list-files-folders-google-drive-google-sheets/
* Google Apps Script - List all files & folders in a Google Drive folder, & write into a speadsheet.
*    - Main function 1: List all folders
*    - Main function 2: List all files & folders
*
* Hint: Set your folder ID first! You may copy the folder ID from the browser's address field.
*       The folder ID is everything after the 'folders/' portion of the URL.
*
* @version 1.0
* @see     https://github.com/mesgarpour
*/

// TODO: Set folder ID
var folderId = '0B8itojOPKoRbMWlLQ0NSdTFPZDQ';

// Main function 1: List all folders, & write into the current sheet.
function listFolers(){
  getFolderTree(folderId, false);
};

// Main function 2: List all files & folders, & write into the current sheet.
function listAll(){
  getFolderTree(folderId, true);
};

// =================
// Get Folder Tree
function getFolderTree(folderId, listAll) {
  try {
    // Get folder by id
    var parentFolder = DriveApp.getFolderById(folderId);
  
    // Initialise the sheet
    var file, data, sheet = SpreadsheetApp.getActiveSheet();
    sheet.clear();
    sheet.appendRow(["Full Path", "Name", "Date", "URL", "Last Updated", "Description", "Size"]);
  
    // Get files and folders
    getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);
  
  } catch (e) {
    Logger.log(e.toString());
  }
};

// Get the list of files and folders and their metadata in recursive mode
function getChildFolders(parentName, parent, data, sheet, listAll) {
  var childFolders = parent.getFolders();

  // List folders inside the folder
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    // Logger.log("Folder Name: " + childFolder.getName());
    data = [
      parentName + "/" + childFolder.getName(),
      childFolder.getName(),
      childFolder.getDateCreated(),
      childFolder.getUrl(),
      childFolder.getLastUpdated(),
      childFolder.getDescription(),
      childFolder.getSize()
    ];
    // Write
    sheet.appendRow(data);
  
    // List files inside the folder
    var files = childFolder.getFiles();
    while (listAll & files.hasNext()) {
      var childFile = files.next();
      // Logger.log("File Name: " + childFile.getName());
      data = [
        parentName + "/" + childFolder.getName() + "/" + childFile.getName(),
        childFile.getName(),
        childFile.getDateCreated(),
        childFile.getUrl(),
        childFile.getLastUpdated(),
        childFile.getDescription(),
        childFile.getSize()
      ];
      // Write
      sheet.appendRow(data);
    }
  
    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);
  }
};
Bác có thể cho em thông tin inbox riêng được không? hay quá bác à, em cần rõ thêm 1 chút
 
Mã:
function listFolderContents() {
  var foldername = 'ten-thu-muc';
  var folderlisting = 'danh sach file cua thu muc ' + foldername;
 
  var folders = DriveApp.getFoldersByName(foldername)
  var folder = folders.next();
  var contents = folder.getFiles();
 
  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  sheet.appendRow( ['name', 'link'] );
 
  var file;
  var name;
  var link;
  var row;
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    sheet.appendRow( [name, link] );    
  }
}
Có phải code này không mọi người
Mình chạy code cứ báo lỗi này:
Exception: Cannot retrieve the next object: iterator has reached the end.
listFolderContents
@ Code.gs:6
Vậy bạn xem giúp mình với
 
Web KT
Back
Top Bottom