从谷歌表单中检索上传文件的网址

时间:2017-07-07 13:43:16

标签: google-sheets spreadsheet google-form

我找到了一个非常好的google表单google脚本,它允许我在电子表格中检索谷歌表单的答案以及“getEditResponseUrl()”,它将帮助我构建一个可以通过谷歌表格。

但是,我正在努力获取“上传文件问题”的网址。用户应该上传文件的问题是第四个“制作”。

我在电子表格中得到的答案只是“[Ljava.lang.Object; @ 508c8b8b”而不是文件。

知道如何使这项工作成为可能,以便我获取用户上传的文件的网址吗?

谢谢你和亲切的问候

var ss = SpreadsheetApp.openById("spreadsheeturl");  // to be customised
var responseSheet = "Database";  // to be customised

function submitFormFunc(e) {
var items = e.response.getItemResponses();
  var responses={};
  for(var i = 0; i< items.length; i++) {
  responses[items[i].getItem().getTitle()]=items[i].getResponse();
   }

  var responseRow = [];
  responseRow.push(e.response.getTimestamp().toString());
  responseRow.push(e.response.getId());
  responseRow.push(responses["Challenge"]);  // to be customised
  responseRow.push(responses["Client"]); 
  responseRow.push(responses["Date"]); 
  responseRow.push(responses["Facture"]); 
 // to be customised
  // add as many as needed

  responseRow.push(FormApp.getActiveForm().getResponse(e.response.getId()).getEditResponseUrl());

  var isNewItem = alreadyExist(ss,e.response.getId());
  if(isNewItem<0){
    ss.getSheetByName(responseSheet).appendRow(responseRow);
  }
  else{
    ss.getSheetByName(responseSheet).getRange(isNewItem+2, 1, 1, 6).setValues([responseRow]);
  }
}

function alreadyExist(ss,id){
  var ids = ss.getSheetByName(responseSheet).getRange("B2:B").getValues();
  for(var i=0; i< ids.length; i++){
    if(ids[i][0]===id){
      return(i);
    }
  }
  return(-1);
}

1 个答案:

答案 0 :(得分:1)

这是Form Notifications add-on的一个片段,它将上传的文件ID转换为Google云端硬盘网址,并在多次上传的情况下连接结果。

 var urls = answer.toString().split(",").map(function(f) {
                return "https://drive.google.com/open?id=" + f;
             }).join(", ");