【问题标题】:When i run my script nothing happens当我运行我的脚本时没有任何反应
【发布时间】:2017-02-28 02:28:23
【问题描述】:

所以我最近发现了这个 google drive 脚本并尝试使用它。 该脚本通常应该在我的 google 驱动器文件夹中获取文件名和 url,并将它们复制到电子表格中。

当我单击运行时,我没有收到任何错误,并且我的驱动器中没有任何反应。

是否有我应该更改的变量以使其工作?

PS : 我对编码很陌生,似乎找不到这段代码有什么问题

提前感谢您的帮助!

代码如下:

function myFunction() {

  function listFilesInFolder(foldername) {
  // If we have not been provided a foldername, assume we will interact with user.
  var interactive = (typeof foldername === 'undefined');

  // Get name of folder to list
  if (interactive) {
    foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL);
  }

  if (foldername === '') return;  // No name provided, exit quietly

  var folders = DriveApp.getFoldersByName(foldername);
  if (!folders.hasNext()) {
    if (interactive) Browser.msgBox("Folder not found.");
    return;
  }
  var folder = folders.next();
  var contents = folder.getFiles();

  var file, data, sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]);

  // Loop over files in folder, using file iterator
  while (contents.hasNext()) {
    file = contents.next();

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET"
      // Skip displaying spreadsheets - I don't know why...
      continue;
    }

    data = [ 
      file.getName(),
      file.getDateCreated(),
      file.getSize(),
      file.getUrl(),
      //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
      file.getDescription(),
      niceFileType( file.getMimeType() )
    ];

    sheet.appendRow(data);

  }
}

}

【问题讨论】:

  • 也许您应该先启用 Drive API。检查this
  • @SangbokLee 刚做了,脚本还是不行
  • 您无需启用 Drive API 即可使用 DriveApp。此脚本是否附加到电子表格?
  • @SpencerEaston 我真的不知道。我发现唯一提到“电子表格”的行是这个 [ var file, data, sheet = SpreadsheetApp.getActiveSheet(); sheet.clear(); ] 但我不知道我是否应该创建一个特定的工作表或在代码中添加名称以使其工作
  • 此脚本需要在电子表格中运行。创建一个新的电子表格。点击tools->Script editor。将您的代码添加到打开的脚本中。它应该能够在该上下文中运行。

标签: arrays google-apps-script google-drive-api google-apps


【解决方案1】:

两个问题。这需要在附加到电子表格的脚本中运行,并且您有一个嵌套函数。

您的代码:

function myFunction() {
  function listFilesInFolder(foldername) {
    ...
  }
 }

删除外部函数 decleration 及其匹配的右括号。代码将运行。

应该是这样的:

function listFilesInFolder(foldername) {
 ...
}

【讨论】:

    【解决方案2】:

    在电子表格中试试这个修改后的代码:

    function myfunction(){
    //Declaring the function listFolders to temp
    var temp = function listFolders(foldername) {
      // If we have not been provided a foldername, assume we will interact with user.
      var interactive = (typeof foldername === 'undefined');
    
      // Get name of folder to list
      if (interactive) {
        foldername = Browser.inputBox("List files in folder", "Enter folder name", Browser.Buttons.OK_CANCEL);
      }
    
      if (foldername === '') return;  // No name provided, exit quietly
    
      var folders = DriveApp.getFoldersByName(foldername);
      if (!folders.hasNext()) {
        if (interactive) Browser.msgBox("Folder not found.");
        return;
      }
      var folder = folders.next();
      var contents = folder.getFiles();
    
      var file, data, sheet = SpreadsheetApp.getActiveSheet();
      sheet.clear();
    
      sheet.appendRow(["Name", "Date", "Size", "URL", /*"Download",*/ "Description", "Type"]);
    
      // Loop over files in folder, using file iterator
      while (contents.hasNext()) {
        file = contents.next();
    
        if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET"
          // Skip displaying spreadsheets - I don't know why...
          continue;
        }
    
        data = [ 
          file.getName(),
          file.getDateCreated(),
          file.getSize(),
          file.getUrl(),
          //"https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
          file.getDescription(),
          file.getMimeType() 
        ];
    
        sheet.appendRow(data);
    
      }
    }
    // calls the  function listFolders below
    temp()
    }
    

    【讨论】:

    • 我认为 niceFileType() 在代码中的某个位置,但很好的调用来修复它。
    • 谢谢,当您发布答案时,我刚刚输入完答案。否则不会发布它,而是修改您的答案以包含更改。 .
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多