2

似乎这应该更容易。但不可否认,我不了解 blob。

function doGet(e) { 
  var app = UiApp.createApplication(); 
  var panel = app.createVerticalPanel().setId('panel');
  var fileUpload = app.createFileUpload().setName('theFile').setId('theFile');
  var handler = app.createServerChangeHandler('uploadfile');
  handler.addCallbackElement(panel);
  fileUpload.addChangeHandler(handler);
  panel.add(fileUpload);
  app.add(panel);
  return app;
} 

function uploadfile(e) 
{ 
// data returned which can be used to create a blob
// assuming mime-type to be a text file in this example
  var fileBlob = Utilities.newBlob(e.parameter.thefile, "text/plain","file.txt" );

    // Create a new file
    var doc = DocumentApp.create('Uploaded Text File');

    doc.appendParagraph(fileBlob.getDataAsString());

  // Save and close the document
  doc.saveAndClose();

  //var doc = DocsList.createFile(fileBlob.getDataAsString());
  var app = UiApp.getActiveApplication();
  app.getElementById('panel').add(app.createLabel('File Uploaded successfully'));
  return app;
}

当我尝试使用此 Google Apps 脚本代码上传文件时,我不断收到未定义的返回。我要做的就是将文本文件上传到我的 Google Drive。

我应该怎么做才能修复此代码?还是有更好的方法来做到这一点?

4

2 回答 2

1

Google Apps 脚本现在具有“实验性”资源,可用于Advanced Google Services. 我数了数 15 项高级服务,包括Drive API.

在此处输入图像描述

点击Resources菜单:

在此处输入图像描述

您还必须转到 Google Developers 控制台,并Drive Service在那里启用。

Google 文档位于:Advanced Drive Services

开发者控制台

以下是谷歌的一些示例代码:

function uploadFile() {
  var image = UrlFetchApp.fetch('http://goo.gl/nd7zjB').getBlob();
  var file = {
    title: 'google_logo.png',
    mimeType: 'image/png'
  };
  file = Drive.Files.insert(file, image);
  Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize);
}

编辑

我认为没有办法使用 HTML 服务将文件从用户计算机上传到 Google 驱动器,但幸运的是我又错了!:)

使用 HTML 服务上传文件

于 2014-04-08T21:55:04.257 回答
0

要进行文件上传,您不能使用服务器处理程序。您必须使用 FormPanel 和提交按钮。请参阅FileUpload 小部件的文档

于 2013-09-10T03:26:38.153 回答