2012-09-09 5 views
1

다음 코드를 사용하여 학생들을위한 드롭 보관함 종류를 만듭니다. 양식은 Google 사이트 페이지에 내장되어 있습니다. 파일이 "보관 용 계정"폴더에 전송되면 텍스트 파일로 자동 변환됩니다. 나는 .doc, .xls 및 .pdf로 시도했다 ... 이 문제를 피할 수 있어야합니까? 덕분에 많은 장 폴Google apps 스크립트 : Google 사이트의 양식에서 내 드라이브에 문서를 놓습니다.

그는 문자 메시지를 의도적으로 제한되어 사용했던 코드를 생각했던 것 같습니다
var folderName = "Assignments-Spring-2011"; 

function doGet() { 

    var app = UiApp.createApplication().setTitle("Upload Assignment"); 
    app.setHeight(180); 
    var form = app.createFormPanel().setId('frm').setEncoding('multipart/form-data'); 
    var formContent = app.createGrid().resize(6,2); 
    form.add(formContent); 

    formContent.setWidget(1, 0, app.createLabel('Assignment Number:')); 
    var assignmentNumberList = app.createListBox(); 
    assignmentNumberList.addItem("Assignment 1"); 
    assignmentNumberList.addItem("Assignment 2"); 
    assignmentNumberList.addItem("Assignment 3"); 
    assignmentNumberList.addItem("Assignment 4"); 
    assignmentNumberList.addItem("Assignment 5"); 
    assignmentNumberList.addItem("Assignment 6"); 
    assignmentNumberList.addItem("Assignment 7"); 
    assignmentNumberList.addItem("Assignment 8"); 

    formContent.setWidget(1, 1, assignmentNumberList.setName('assignmentNumber')); 

    formContent.setWidget(3, 0, app.createLabel('Assignment File:')); 
    formContent.setWidget(3, 1, app.createFileUpload().setName('thefile')); 
    formContent.setWidget(5, 0, app.createSubmitButton('Submit Assignment!')); 

    // thank you panel 
    var panel = app.createSimplePanel().setVisible(false).setId("thankyouPanel"); 
    var label = app.createLabel("Thank you for submitting the   Assignment").setStyleAttribute("fontSize", "16px"); 
    panel.add(label); 

    app.add(panel); 
    app.add(form); 

    return app; 
} 

function doPost(e) { 
    var doc = SpreadsheetApp.getActiveSpreadsheet(); 
    var name = Session.getActiveUser().getUserLoginId(); 
    var assignmentFile = e.parameter.file; 
    var uploadBlob = Utilities.newBlob  (assignmentFile, "text/plain",e.parameter.assignmentNumber+"-"+name+"-"+e.parameter.thefile.name); 
    var doc = DocsList.createFile(uploadBlob); 
    // get assignment folder 
    var folder = DocsList.getFolder(folderName); 
    doc.addToFolder(folder); 

    var app = UiApp.getActiveApplication(); 
    var form = app.getElementById("frm").setVisible(false); 
    var panel = app.getElementById("thankyouPanel").setVisible(true); 
    app.close(); 
    return app; 
} 

답변

3

:

var uploadBlob = Utilities.newBlob  (assignmentFile, "text/plain",e.parameter.assignmentNumber+"-"+name+"-"+e.parameter.thefile.name); 

단순히 그 라인을 제거하고 그래서

처럼 변수를 리디렉션
var uploadBlob = e.parameter.file; 

당신을 똑바로 세워야합니다.

+0

... 문제가 남아 있습니다.이 글을 읽었습니다 : http://code.google.com/p/google-apps-script-issues/issues/detail?id=582 해결책을 찾으십시오. 어떻게 "ContentType"을 변수에 넣고 "text/plain"대신 secnd 매개 변수로 다시 사용할 수 있습니까 ??? ??? – user1657722

+1

조정할 때 작동합니다. 다음은 doPost 섹션입니다. '} function doPost (e) { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var name = Session.getActiveUser(). getUserLoginId(); var fileName = e.parameter.assignmentNumber + "-"+ 이름 + "-"+ e.parameter.thefile.name var doc = DocsList.createFile (e.parameter.thefile); doc.rename (fileName); // 할당 폴더 얻기 var folder = DocsList.getFolder (folderName); doc.addToFolder (folder); ' – MartinK

+0

아, 'doc'이라는 변수를 사용해야했습니다. – MartinK

관련 문제