繁体   English   中英

如果未指定文件上传,则Google Apps脚本中将发生错误

[英]error in google apps script if no file upload is specified

我想为用户提供上传文件的选项,但这并不是绝对必要的。 如果未指定文件,则此脚本可能会出现故障。 我该如何解决? 似乎它确实不喜欢的行是:var file1 = folder.createFile(blob1);

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {

  try {

    var dropbox = "Student Files";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }


    var id = "1L2syfAOm6MiYPtWuWwFZFK_ZtLpLOjNx9EpjHh2IKUY";            
    var ss = SpreadsheetApp.openById(id);


    var blob1 = form.myFile1;
    var file1 = folder.createFile(blob1);
    file1.setDescription("Uploaded by " + form.myName);
    var f1 = '=HYPERLINK("' + file1.getUrl() + '", "File 1")';


    Logger.log("test");

    var sheet = ss.getSheetByName('Sheet1');
    sheet.appendRow([form.myName, form.addy, form.twitter, form.status, form.what, form.projTitle, 
                     form.brief, form.full, form.role, form.date, form.website, f1]);


    return "Your entry was successfully uploaded!";



  } catch (error) {

    return error.toString();
  }

}

编辑:由于建议,这就是我最后得到的结果(允许三个可选文件)

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {

  try {

    var dropbox = "Student Files";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }


    var id = "1L2syfAOm6MiYPtWuWwFZFK_ZtLpLOjNx9EpjHh2IKUY";            
    var ss = SpreadsheetApp.openById(id);

    var blob1 = form.myFile1;
    var blob2 = form.myFile2;
    var blob3 = form.myFile3;

    // check for empty blobs on file attachment uploads
    if( !isEmpty(blob1) ) {
      var file1 = folder.createFile(blob1);
      file1.setDescription("Uploaded by " + form.myName);
      var f1 = '=HYPERLINK("' + file1.getUrl() + '", "File 1")';
    } else {
      var f1 = "nada"; 
    }

    if( !isEmpty(blob2) ) {
      var file2 = folder.createFile(blob2);
      file2.setDescription("Uploaded by " + form.myName);
      var f2 = '=HYPERLINK("' + file2.getUrl() + '", "File 2")';
    } else {
      var f2 = "nada"; 
    }

    if( !isEmpty(blob3) ) {
      var file3 = folder.createFile(blob3);
      file3.setDescription("Uploaded by " + form.myName);
      var f3 = '=HYPERLINK("' + file3.getUrl() + '", "File 3")';
    } else {
      var f3 = "nada"; 
    }    

    Logger.log("test");

    var sheet = ss.getSheetByName('Sheet1');
    sheet.appendRow([form.myName, form.addy, form.twitter, form.status, form.what, form.projTitle, 
                     form.brief, form.full, form.role, form.date, form.website, f1, f2, f3]);


    return "Your entry was successfully uploaded!";



  } catch (error) {

    return error.toString();
  }

}

// New stuff. A function that tests if a string is empty or null
function isEmpty(str) {
    return (!str || 0 === str.length);
}

您不能只是测试是否指定了名称? 即添加一条if语句,以检查名称是否不为null也不为空...如果用户试图创建子目录,您可能还想测试斜线之类的内容...

我从这里取消了null或empty测试,但是您可以自己滚动。

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('form.html');
}

function uploadFiles(form) {

  try {

    var dropbox = "Student Files";
    var folder, folders = DriveApp.getFoldersByName(dropbox);

    if (folders.hasNext()) {
      folder = folders.next();
    } else {
      folder = DriveApp.createFolder(dropbox);
    }


    var id = "1L2syfAOm6MiYPtWuWwFZFK_ZtLpLOjNx9EpjHh2IKUY";            
    var ss = SpreadsheetApp.openById(id);


    var blob1 = form.myFile1;

    if( !isEmpty(blob1) ) {

       var file1 = folder.createFile(blob1);
       file1.setDescription("Uploaded by " + form.myName);
       var f1 = '=HYPERLINK("' + file1.getUrl() + '", "File 1")';


        Logger.log("test");

       var sheet = ss.getSheetByName('Sheet1');
       sheet.appendRow([form.myName, form.addy, form.twitter, form.status, form.what, form.projTitle, 
                     form.brief, form.full, form.role, form.date, form.website, f1]);


       return "Your entry was successfully uploaded!";

    } else {
        return "No file name specified!";
    }


  } catch (error) {

    return error.toString();
  }

}

// New stuff. A function that tests if a string is empty or null
function isEmpty(str) {
    return (!str || 0 === str.length);
}

只需检查blob1是否为null ,然后检查是否为异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM