簡體   English   中英

谷歌腳本幫助在驅動器中創建新文件夾,名稱取自一行中的兩個單元格

[英]Google Script help to create new folder in drive with name drawn from two cells in one row

我正在嘗試使用附加到谷歌表格中的按鈕的腳本在谷歌驅動器中創建一個新文件夾。 到目前為止,我已經完成了能夠創建文件夾的事情。 我的請求是幫助使用行中兩個單元格中的值命名文件夾。 例如:序列號和客戶名稱是工作表中的兩列。 因此,當我單擊創建文件夾按鈕時,在該行中,我希望創建的文件夾的名稱為 Serial No-Customer Name(例如,1-XYZ)。 我在網上搜索了很多,但沒有得到任何我可以使用的東西。 我不是技術人員,所以我發現很難理解如何做到這一點。 歡迎任何幫助。 謝謝,拉維

假設序列號在 A 中,客戶名稱在 B 中,並且在同一行的任何位置都有一個復選框

在此處輸入圖像描述

創建一個新文件夾並為其命名

function onSpeEdit(event){
  var sheet = event.source.getActiveSheet();
  var cel = event.source.getActiveRange();
  if (cel.getValue()==true){
    var name =  sheet.getRange('A' + cel.getRow()).getValue() + '_' + sheet.getRange('B' + cel.getRow()).getValue()
    if (name!=''){
      sheet.getRange('F' + cel.getRow()).setValue(getFolderId(name))
    }
  }
}

function getFolderId(name){
  var id;
  var folders = DriveApp.getFoldersByName(name);
  if (folders.hasNext()) {
    var folder = folders.next();
    id = folder.getId(); }
  else {
    var folder = DriveApp.createFolder(name);
    id = folder.getId();
  }
  return id;
}

因此我也防止兩次使用相同的名稱創建相同的文件夾

在 onSpeEdit 上放置一個可安裝的觸發器

您將取回 F 列中的文件夾 ID

DriveApp

可安裝觸發器

問題是分配給腳本的按鈕/形狀不包含您放置它的位置。 它沒有綁定到一個單元格,它漂浮在它上面。

您可能會想到的第一件事是創建多個按鈕並為每個按鈕創建一個 function,但這非常耗時,更糟糕的是,實現非常糟糕。

所以我們必須創造性地確定我們想要處理的細胞。 這是我的想法,因此您可以確定要為其創建文件夾的行。

您需要添加一個列,用於標識是否要處理該行。 勾選復選框並按下按鈕后,腳本現在循環所有行並找到勾選復選框的行。 然后根據它保存的數據創建一個文件夾。 如果勾選了多個復選框,這也允許您創建多個文件夾。 請參閱下面的腳本和圖像:

腳本:

function createFolder() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();

  values.forEach(function (row) {
    var [isTicked, serialNum, customerName] = row;
    // if column A is ticked 
    if(isTicked) {
      var name = `${serialNum}-${customerName}`;
      var folders = DriveApp.getFoldersByName(name);
      // if name generated is not existing
      if(!folders.hasNext())
        DriveApp.createFolder(name);
    }
  });
}

樣本:

在此處輸入圖像描述

Output:

在此處輸入圖像描述

暫無
暫無

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

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