Google apps script 在Google站点上传文件-文件柜,列表页-doPost问题,意外错误

Google apps script 在Google站点上传文件-文件柜,列表页-doPost问题,意外错误,google-apps-script,Google Apps Script,我让这个脚本工作,但几周前它突然停止了-我假设我犯了一些编程错误,但我已经几个星期无法调试了 我希望谷歌网站上有一个脚本,允许某人上传一个文件(和一些其他信息,如其名称),并让脚本将其附加到一个新的文件柜页面,然后用新页面的信息更新列表页面 我使用了一篇旧论坛帖子中的部分代码,在需要的地方进行了更新。如果有人知道更简单的方法,我不反对重写 谢谢 编辑:问题似乎出在doPost(e)函数中-点击submit后,什么也没有发生,小工具变为空白,我收到错误消息:“发生了意外错误。” 函数doGet(e

我让这个脚本工作,但几周前它突然停止了-我假设我犯了一些编程错误,但我已经几个星期无法调试了

我希望谷歌网站上有一个脚本,允许某人上传一个文件(和一些其他信息,如其名称),并让脚本将其附加到一个新的文件柜页面,然后用新页面的信息更新列表页面

我使用了一篇旧论坛帖子中的部分代码,在需要的地方进行了更新。如果有人知道更简单的方法,我不反对重写

谢谢

编辑:问题似乎出在doPost(e)函数中-点击submit后,什么也没有发生,小工具变为空白,我收到错误消息:“发生了意外错误。”

函数doGet(e){
返回getUi(e);
}
函数getUi(e){
//创建用于上载信息的用户界面
var app=UiApp.createApplication().setTitle('文件上载');
var form=app.createFormPanel().setId('form').setEncoding('multipart/form data');
//创建网格以存储信息
var formContent=app.createGrid().resize(6,2);
setText(0,0,“文件名:”);
var fileName=app.createTextBox().setName('fileName').setId('fileName');
setWidget(0,1,文件名);
var fileUpload=app.createFileUpload().setName('fileUpload').setId('fileUpload');
setWidget(1,1,文件上传);
setWidget(2,0,app.createLabel('Short Description:');
var fileDescription=app.createTextBox().setName('fileDescription').setId('fileDescription');
setWidget(2,1,文件描述);
setText(3,0,'Level:');
var level=app.createListBox().setName('level').setId('level').addItem('productional').addItem('mediate').addItem('Advanced');
setWidget(3,1级);
setText(4,0,'Subject:');
var subject=app.createListBox().setName('subject').setId('subject').addItem('basicals').addItem('Observing').addItem('sular System').addItem('Stars').addItem('starr Evolution').addItem('银河系').addItem('games').addItem('Cosmology').addItem('
formContent.setWidget(4,1,主题);
var submitButton=app.createSubmitButton(“提交”).setId(“提交按钮”);
setWidget(5,1,submitButton);
//var handler=app.createServerHandler(“pauseUi”);
//submitButton.addClickHandler(handler);
表格。添加(表格内容);
应用程序添加(表格);
var resultTextArea=app.createTextArea().setName(“resultArea”).setId(“resultArea”);
resultTextArea.setVisibleLines(5);
resultTextArea.setSize(“80%”,即“80%”);
应用程序添加(resultTextArea);
var ogga=‘好上帝’;
Logger.log(ogga);
返回应用程序;
}
函数pauseUi(e){
var app=UiApp.getActiveApplication();
app.getElementById(“文件”).setEnabled(false);
app.getElementById(“文件名”).setEnabled(false);
app.getElementById(“fileDescription”).setEnabled(false);
app.getElementById(“submitButton”).setEnabled(false);
app.getElementById(“级别”).setEnabled(false);
app.getElementById(“主题”).setEnabled(false);
app.getElementById(“resultArea”).setEnabled(false);
app.getElementById(“resultArea”).setText('请稍候…');
返回应用程序;
}
函数重置UI(应用程序){
app.getElementById(“文件”).setEnabled(true);
app.getElementById(“文件名”).setEnabled(true);
app.getElementById(“fileDescription”).setEnabled(true);
app.getElementById(“submitButton”).setEnabled(true);
app.getElementById(“级别”).setEnabled(true);
app.getElementById(“主题”).setEnabled(true);
app.getElementById(“resultArea”).setEnabled(true);
}
函数doPost(e){
var app=UiApp.getActiveApplication();
Logger.log(即参数);
//为上传的文件创建新页面
var msg=createNewPage(e.parameter.fileName,e.parameter.fileUpload,e.parameter.fileDescription,e.parameter.level,e.parameter.subject);
//重置上传页面
resetUi(app);
//通知用户成功或失败
app.getElementById(“resultArea”).setText(msg.join('\n'));
返回应用程序;
}
函数createNewPage(文件名、上载文件、文件描述、级别、主题){
//站点信息
var mysite=SitesApp.getSite(“uw.edu”,“介绍性天文学信息交换所”);
var labsPage=mysite.getChildByName(“实验室练习”);
Logger.log('lab页的url为:'+labsPage.getUrl());
var msg=[];
//创建新页面
var page=findPage(文件名);
如果(第==null页){
var page=labsPage.createFileCabinetPage(文件名,normalizeName(文件名),“”);
}
试一试{
//将文件添加到文件柜
var attachment=page.addHostedAttachment(上传文件);
//查看是否已在列表中列出
var listItem=getFileListItem(文件名);
如果(listItem==null){
var fileUrl=page.getUrl();
var newValues=[repairUrlValue(fileUrl,fileName),fileDescription,level,subject];
labsPage.addListItem(新值);
}
msg.push('刷新页面以查看添加的项目或在以下位置编辑文件:'+fileUrl);
}捕获(e){
msg.push('未能上载'+fileName+'附件,可能是由于大小限制或超时问题。');
}
返回味精;
}
函数getFileListItem(文件名){
var mysite=SitesApp.getSite(“uw.edu”,“介绍性天文学信息交换所”);
var labPage=mysite.getChildByName(“实验室练习”);
var i=getListItemIndex(labPage,文件名,0);
var items=labPage.getListItems();
Logger.log('labPage列表项'+项[i].getValueByIndex(0));
return(i>-1)?labPage.getListItems()[i]:null;
}
//获取项目的索引
函数getListItemIndex(listPage、propOneValue、propOneIndex){
//对于propOneIndex列,返回等于propOneValue的索引(行),或-1。
var listItems=listPage.getListItems();
Logger.log('listItems'+listItems.length);
var r=-1;
对于(变量i=0;i 0){
键+='-';
继续;
}
如果(!isAlnum(字母)){
继续;
}
if(key.length==0&&isDigit(字母)){
continue;//必须输入第一个字符
function doGet(e){
  return getUi(e);
}

function getUi(e) {
  //create user interface for uploading information
  var app = UiApp.createApplication().setTitle('File Upload');

  var form = app.createFormPanel().setId('form').setEncoding('multipart/form-data');

  //create grid to store information
  var formContent = app.createGrid().resize(6,2);

  formContent.setText(0,0,'File Name: ');
  var fileName = app.createTextBox().setName('fileName').setId('fileName');
  formContent.setWidget(0,1,fileName);

  var fileUpload = app.createFileUpload().setName('fileUpload').setId('fileUpload');
  formContent.setWidget(1,1,fileUpload);

  formContent.setWidget(2,0,app.createLabel('Short Description: '));
  var fileDescription = app.createTextBox().setName('fileDescription').setId('fileDescription');
  formContent.setWidget(2,1,fileDescription);

  formContent.setText(3,0,'Level: ');
  var level = app.createListBox().setName('level').setId('level').addItem('Introductory').addItem('Intermediate').addItem('Advanced');
  formContent.setWidget(3,1,level);

  formContent.setText(4,0,'Subject: ');
  var subject = app.createListBox().setName('subject').setId('subject').addItem('Fundamentals').addItem('Observing').addItem('Solar System').addItem('Stars').addItem('Stellar Evolution').addItem('Milky Way').addItem('Galaxies').addItem('Cosmology')
  formContent.setWidget(4,1,subject);

  var submitButton = app.createSubmitButton("Submit").setId("submitButton");
  formContent.setWidget(5,1,submitButton);
  //var handler = app.createServerHandler("pauseUi");
  //submitButton.addClickHandler(handler);

  form.add(formContent);
  app.add(form);

  var resultTextArea = app.createTextArea().setName("resultArea").setId("resultArea");
  resultTextArea.setVisibleLines(5);
  resultTextArea.setSize("80%","80%");
  app.add(resultTextArea);
  var ogga = 'good god';
  Logger.log(ogga);
  return app; 
}


function pauseUi(e){
  var app = UiApp.getActiveApplication();
  app.getElementById("file").setEnabled(false);
  app.getElementById("fileName").setEnabled(false);
  app.getElementById("fileDescription").setEnabled(false);
  app.getElementById("submitButton").setEnabled(false);
  app.getElementById("level").setEnabled(false);
  app.getElementById("subject").setEnabled(false);
  app.getElementById("resultArea").setEnabled(false);
  app.getElementById("resultArea").setText('Please wait...'); 
  return app;
}

function resetUi(app){
  app.getElementById("file").setEnabled(true);
  app.getElementById("fileName").setEnabled(true);
  app.getElementById("fileDescription").setEnabled(true);
  app.getElementById("submitButton").setEnabled(true);
  app.getElementById("level").setEnabled(true);
  app.getElementById("subject").setEnabled(true);
  app.getElementById("resultArea").setEnabled(true);
}

function doPost(e){
  var app = UiApp.getActiveApplication();
  Logger.log(e.parameter);
  //create new page for uploaded file
  var msg = createNewPage(e.parameter.fileName,e.parameter.fileUpload,e.parameter.fileDescription,e.parameter.level,e.parameter.subject);  
  //reset upload page
  resetUi(app);
  //notify user of success or failure
  app.getElementById("resultArea").setText(msg.join('\n'));
  return app;
}

function createNewPage(fileName,uploadedFile,fileDescription,level,subject){
  //site information
  var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
  var labsPage = mysite.getChildByName("labs-exercises");
  Logger.log('url for lab page is: '+labsPage.getUrl());
  var msg = [];
  //create new page
  var page = findPage(fileName);
  if (page == null){
    var page = labsPage.createFileCabinetPage(fileName, normalizeName(fileName), '');
  }

  try{
    //add file to file cabinet
    var attachment = page.addHostedAttachment(uploadedFile);
    //see if already listed on list
    var listItem = getFileListItem(fileName);
    if (listItem == null) {
      var fileUrl = page.getUrl();
      var newValues = [repairUrlValue(fileUrl, fileName), fileDescription, level, subject];
      labsPage.addListItem(newValues);
    }
    msg.push('Refresh page to see your item added or edit your file at: '+fileUrl);
  } catch(e){
    msg.push('Failed to upload the '+ fileName +' attachment, possibly due to size constraints or time out issues.');
  }
  return msg; 
}

function getFileListItem(fileName){
  var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
  var labPage = mysite.getChildByName("labs-exercises");

  var i = getListItemIndex(labPage,fileName,0);

  var items = labPage.getListItems();
  Logger.log('labPage list item'+items[i].getValueByIndex(0));
  return (i>-1)? labPage.getListItems()[i]:null;
}

//get the index of your item

function getListItemIndex(listPage,propOneValue,propOneIndex){
  //for column propOneIndex, returns index (row) that equals propOneValue, or -1.
  var listItems = listPage.getListItems();
  Logger.log('listItems '+listItems.length);
  var r = -1;
  for (var i = 0;i<listItems.length && r<0;i++){
    if ((listItems[i].getValueByIndex(propOneIndex) == propOneValue)){r = i;}
  }
  return r;
}



//repairs URL

function repairUrlValue(url,text){
  Logger.log('buildAnchor for'+text+'->'+url);
  var a = '<a href="'+url+'">"'+text+'</a>';
  Logger.log('...built '+a);
  return a;
}

//find name of page with normalized name

function findPage(name){
  var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
  var parentPage = mysite.getChildByName("labs-exercises");
  var norm = normalizeName(name);

  var page = parentPage.getChildByName(norm);
  Logger.log('findPage '+page.getUrl());
  return page; 
}

//get size of attached file in KB

function getBlobSize(blob) {
  return Math.round(blob.getBytes().length/1024)+" KB"; 
}

//put the name into reasonable form

function normalizeName(header){
  var key = "";
  for (var i = 0; i < header.length; ++i){
    var letter = header[i];
    if (letter == " " && key.length > 0){
      key +='-';
      continue;
    }
    if (!isAlnum(letter)){
      continue;
    }
    if (key.length == 0 && isDigit(letter)){
      continue; //first character must be a letter
    }
    key += letter.toLowerCase();
  }
  Logger.log("normalizeName from '"+header+"' to '"+key+"'");
  return key;
}

/*
 i s A l n u m
Returns true if the character char is alphabetical, false otherwise
*/

function isAlnum(char){
  return char >= 'A' && char <= 'Z' ||
    char >='a' && char <= 'z' ||
    isDigit(char);
}

/* i s D i g i t
Returns true if the character is a digit, false otherwise.
*/

function isDigit(char){
  return char >='0' && char <= '9';
}
app.getElementById("file").setEnabled(false);