【问题标题】:Populate Google sheet with file names from folder on Google drive and add checkbox Google Script使用 Google 驱动器上文件夹中的文件名填充 Google 工作表并添加复选框 Google Script
【发布时间】:2021-06-28 00:04:06
【问题描述】:

任何人都可以帮助我使用我目前正在屠宰的脚本将文件名导入工作表并在附加行中添加一个复选框...

我正在尝试将文件名输入 K7:K,并在 L7:L 中旁边有一个复选框,我已经玩了几个小时,并决定我不妨放下我的骄傲,在这里问一个愚蠢的问题!

我当前的代码是:

function listFilesInFolder(folderName) {

SpreadsheetApp.getActive().toast("Populating Register...");

    var sheetName = "Register" 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  

//change the folder ID below to reflect your folder's ID 
var folder = DriveApp.getFolderById("18KVczz-XW_3OSmCsVVIxd8p38maDzNm3");
var contents = folder.getFiles();

var cnt = 0;
var file;

while (contents.hasNext()) {

    var file = contents.next();
    cnt++;

       data = [
            file.getName(),          
        ];
        
        sheet.appendRow(data);

    var checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
    sheet.getRange("L:L").setDataValidation(checkbox).setValue("FALSE");
        
    }
} 

显然,它很遥远,如果有人可以帮助我,我将永远感激不尽! :)

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    试试这个

    function listFilesInFolder(folderName) {
      SpreadsheetApp.getActive().toast("Populating Register...");
      var sheetName = "Register" 
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
      var folder = DriveApp.getFolderById("18KVczz-XW_3OSmCsVVIxd8p38maDzNm3");
      var contents = folder.getFiles();
      var cnt = 0;
      var file;
      while (contents.hasNext()) {
          var file = contents.next();
          cnt++;
          sheet.getRange("K"+(6+cnt)).setValue(file.getName());
        }
      var checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
      sheet.getRange("L7:L"+(6+cnt)).setDataValidation(checkbox).setValue("FALSE");
    }
    

    如果要添加新数据:

    function listFilesInFolder(folderName) {
      SpreadsheetApp.getActive().toast("Populating Register...");
      var sheetName = "Register" 
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
      var folder = DriveApp.getFolderById("18KVczz-XW_3OSmCsVVIxd8p38maDzNm3");
      var contents = folder.getFiles();
      var cnt = sheet.getLastRow();
      var file;
      while (contents.hasNext()) {
          var file = contents.next();
          cnt++;
          sheet.getRange("K"+(cnt)).setValue(file.getName());
        }
      var checkbox = SpreadsheetApp.newDataValidation().requireCheckbox().build();
      sheet.getRange("L7:L"+(cnt)).setDataValidation(checkbox).setValue("FALSE");
    }
    

    【讨论】:

    • 谢谢迈克!那行得通,但是从 K1:L 中放入数据并且似乎只工作一次,如果我第二次运行它,它似乎什么也没做。我尝试将您的 getRange("K"+cnt) 更新为 K7,但没有成功...
    • 我已经编辑了我的答案,从第 7 行开始。如果你第二次吃午饭,脚本将在同一个地方覆盖相同的值!解释一下你想做什么......
    • 太棒了,谢谢迈克!我希望运行该脚本以保持填充一个寄存器,每次都添加到下一个空白行......对不起这个模糊的问题!
    • 我有另一个脚本可以在文件注册后移动它们...
    • 如果要在之前的数据末尾添加,我又更新了一个脚本...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多