簡體   English   中英

從新的 Google 工作表行創建文件夾

[英]Create Folder from new Google sheet Row

希望有人能幫助我。 我為包含超鏈接的新文件夾創建了一個 Google 腳本。 (非常新的腳本)

由於某種原因,它沒有給出錯誤,但它也沒有創建文件夾。超鏈接必須在 R 列中,並且文件夾的名稱來自最后一行列 a,b 一起。

(是否也可以將現有模板文件夾復制到新文件夾)

function createAndHyperlink() {
    var ss, sh, parent, parent2, r, v, thisCell, folder
    ss = SpreadsheetApp.getActive()
    sh = ss.getSheetByName('MOC Permanent')
    parent = DriveApp.getFileById(ss.getId()).getParents().next();
    parent2 = DriveApp.getFolderById("1vxS3FebsDLqrGGQc9kG7cE3tO9zN8Qre")
   r = sh.getLastRow()
   v = sh.getMaxColumns()
      for (var i = 0, l = v.length; i < l; i++) {
        thisCell = sh.getRange(i + 3, 2)
        if (v[i][0] && !thisCell.getFormula()) {
            folder = parent2.createFolder(v[i][0]);
            thisCell.setFormula('=HYPERLINK("' + folder.getUrl() + '"; "' + v[i][0] + '")');
        }
    }
}

谷歌表格: https://docs.google.com/spreadsheets/d/12n2Cmu6OqZskD_j7YhVrU14qaQPPGnQyIoSEIw8stqE/edit?usp=sharing

希望有人可以幫助我

如果我正確理解您的帖子,您希望創建以父文件夾內A列 + B列上的每一行數據命名的子文件夾。 然后,獲取子文件夾的每個鏈接,並將這些鏈接中的每一個添加到列 R 作為HYPERLINKS

推薦

我已經調整了您當前的腳本,您可以使用下面的示例腳本作為參考:

更新

//MAIN SCRIPT TO RUN
function createAndHyperlink() {
    var ss, sh, lastRow, name;
    ss = SpreadsheetApp.getActive();
    sh = ss.getSheetByName('MOC Permanent');
    lastRow = sh.getDataRange().getLastRow();

    for(var row=2; row<=lastRow; row++){
      name = sh.getRange(row,1).getValue()+sh.getRange(row,2).getValue();
      if(sh.getRange(row,18).getValue().toString()==""){
        sh.getRange(row,18).setFormula('=HYPERLINK('+"\""+createFolder(name).getUrl()+"\",\""+name+"\")");
        Logger.log("Created a folder for "+"Name:\n"+name);
      }else{
        Logger.log("R"+row+" contains a hyperlink already!");
      }
    }

    //THIS CODE BELOW ENSURES THE LAST ROW OF COLUMN R WAS ADDED WITH HYPERLINK BEFORE COPYING FUNCTION BEGINS
    if(sh.getRange(lastRow,18).getValue().toString()!=""){
      addTempFileCopy();
    }
}

//FUNCTION TO CREATE SUB FOLDERS INSIDE THE PARENT FOLDER
function createFolder(folderName){
    var parent, folders, firstLevelFolder, newfolder;

    parent = DriveApp.getFolderById("PARENT_FOLDER_ID").getName();
    folders = DriveApp.getFoldersByName(parent);
    firstLevelFolder = (folders.hasNext()) ? folders.next() : DriveApp.createFolder(parent);

    //CREATE UNIQUE SUBFOLDERS INSIDE OF THE PARENT FOLDER
    newfolder = firstLevelFolder.createFolder(folderName);
    return newfolder; //RETURNS THE LINK OF THE CREATED SUBFOLDER
}

//FUNCTION TO ADD THE TEMPLATE FILE INTO EACH CREATED SUB FOLDERS
function addTempFileCopy(){
    var parent, subFolder, ss;

    ss = SpreadsheetApp.getActive();
    parent = DriveApp.getFolderById("PARENT_FOLDER_ID").getFolders();

    while(parent.hasNext()) {
      subFolder = parent.next();
      var destFolder = DriveApp.getFolderById(subFolder.getId()); 
      DriveApp.getFileById(ss.getId()).makeCopy(subFolder.getName()+" - Template file copy", destFolder);
      Logger.log("Template file name: "+ss.getName()+"\nAdded to folder: "+subFolder.getName());
    }

}

樣品表

在此處輸入圖像描述

結果

運行腳本后,在COLUMN R上添加了HYPERLINKS

在此處輸入圖像描述

以下是在父文件夾內的 Google Drive 上創建的子文件夾:

在此處輸入圖像描述

執行日志結果:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM