【问题标题】:Uploading a file to Google Shared Drive via Spreadsheet通过电子表格将文件上传到 Google 共享驱动器
【发布时间】:2022-01-27 19:45:03
【问题描述】:

我正在尝试使用 google 电子表格将文件上传到共享驱动器上的某个文件夹。我在网上找到了这段代码,它实际上并没有开始工作,但我玩过它,它仍然无法启动上传。

我使用的代码来自this website。 我修改了上传功能:

folderId = 'my folder ID'

driveId = 'my shared drive ID'
function onOpen(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var menuEntries = [];
  menuEntries.push({name: "File", functionName: "doGet"});
  ss.addMenu("Attach", menuEntries);
}

//the upload script
function upload(obj) {
var metadata = {
      "parents": [{
        "id": folderId,
        "kind": "drive#parentReference"
}],
    "teamDriveId": driveId };
  var optionalParams = {
    "supportsAllDrives": true
      };
  
file = Drive.Files.insert(metadata, optionalParams);

  var activeSheet = SpreadsheetApp.getActiveSheet();
  var File_name = file.getName()
  var value = 'hyperlink("' + file.getUrl() + '";"' + File_name + '")'
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var selection = activeSheet.getSelection();
  var cell = selection.getCurrentCell()
  cell.setFormula(value)
  return {
    fileId: file.getId(),
    mimeType: file.getMimeType(),
    fileName: file.getName(),
  };
}

【问题讨论】:

  • 在您的脚本中,objupload(obj) 未使用。 obj 是什么?
  • 我知道。我认为我用作参考的原始代码有问题。里面是:var file = DriveApp.getFolderById(Folder_Id).createFile(obj.upload); 这个不起作用,因为我需要使用高级Drive 功能而不是Drive.App
  • 这个不起作用,因为我需要使用高级Drive 功能而不是Drive.App,因为我需要上传到共享驱动器。所以,是的,这实际上让我感到困惑,也许我应该从函数中删除 obj
  • 感谢您的回复。我不得不再次为我糟糕的英语水平道歉。不幸的是,我仍然无法理解你的问题。但我想试着理解它。当我能正确理解它时,我想考虑解决方案。如果您能原谅我糟糕的英语水平,我将不胜感激。
  • 不用担心。我要做的是:单击电子表格上将触发上传菜单(选择文件>上传)的单元格,然后在上传完成后返回一个链接文件应存储在“团队驱动器”上的特定文件夹中”或者现在称为“共享驱动器”..现在是不是更清楚了一点?

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


【解决方案1】:

我认为 obj 可能是指您上传的文件类型,您可以查看此文档中的正确代码https://developers.google.com/drive/api/v3/manage-uploads#multipart

只要确保选择“Java”即可。

这是该知识库中的示例:

File fileMetadata = new File();
fileMetadata.setName("photo.jpg");
java.io.File filePath = new java.io.File("files/photo.jpg");
FileContent mediaContent = new FileContent("image/jpeg", filePath);
File file = driveService.files().create(fileMetadata, mediaContent)
    .setFields("id")
    .execute();
System.out.println("File ID: " + file.getId());

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多