使用列范围中的唯一值

时间:2016-11-08 13:00:47

标签: google-apps-script google-sheets

我制作了一个脚本来创建这些特定文件夹中的文件夹和文件。 该脚本工作正常但我不能使用列范围中的唯一值(文件夹和文件获取所有范围的名称 - 用逗号分隔) - 我需要范围中的A1值为第一个文件夹的名称(和其文件的名称相同),A2值是第二个文件夹(及其文件)的名称,依此类推......

我该怎么做才能解决这个问题?

function myFunction() {    
    var aa = SpreadsheetApp.getActiveSheet();
    var data = aa.getDataRange().getValues();

    var pasta = DriveApp.createFolder(data);
    DriveApp.getFolderById('0B1B9ZGsFr8j0RW82NTRQejd5bmM').addFolder( pasta );
    DriveApp.getRootFolder().removeFolder(pasta);

    var doc = DocumentApp.create(data);
    docFile = DriveApp.getFileById( doc.getId() );
    DriveApp.getFolderById( pasta.getId() ).addFile( docFile );
    DriveApp.getRootFolder().removeFile(docFile);

    docsheet = DriveApp.getFileById('1zSpgQv5u9kvTu9H9kCwh9yUTUgtJ8x9fJLke7_VDCws');
    var dodo = docsheet.makeCopy().setName(data);
    DriveApp.getFolderById( pasta.getId() ).addFile( dodo );
    DriveApp.getRootFolder().removeFile(dodo);
}

1 个答案:

答案 0 :(得分:0)

你可能想要按照

的方式做点什么
function myFunction() {    
  var aa = SpreadsheetApp.getActiveSheet();
  var data = aa.getDataRange().getValues();

  data.map(function(row) {  // Get only column A
    return row[0];
  }).filter(function(x, i, s) { // If the index is smaller we have a duplicate
    return s.indexOf(x) === i;
  }).forEach(function(name){

    // Create the folder
    var pasta = DriveApp.createFolder(name);
    DriveApp.getFolderById('0B1B9ZGsFr8j0RW82NTRQejd5bmM').addFolder(pasta);
    DriveApp.getRootFolder().removeFolder(pasta);

    // Create the doc var doc = DocumentApp.create(name);
    docFile = DriveApp.getFileById( doc.getId() );
    DriveApp.getFolderById(pasta.getId()).addFile(docFile);
    DriveApp.getRootFolder().removeFile(docFile);

    // Copy docsheet
    docsheet = DriveApp.getFileById('1zSpgQv5u9kvTu9H9kCwh9yUTUgtJ8x9fJLke7_VDCws');
    var dodo = docsheet.makeCopy().setName(name);
    DriveApp.getFolderById(pasta.getId()).addFile(dodo);
    DriveApp.getRootFolder().removeFile(dodo);
  });    
}