从定义ID中导出Google表单视图ID

时间:2016-09-21 15:07:50

标签: python google-form

当我定义表单时,它有url:

https://docs.google.com/a/domain.com/forms/d/1d2Y9R9JJwymtjEbZI6xTMLtS9wB7GDMaopTQeNNNaD0/edit

我完成了我想要表单的问题并使用"发送"按钮发布我的表单,我不点击电子邮件中的"包含表格"复选框。我通过电子邮件发送表单的人现在收到并通过电子邮件邀请他们填写表单,当他们这样做时,他们最终会在页面上显示以下网址:

https://docs.google.com/a/domain.com/forms/d/e/1FAIpQLScINR5rudwEKNVwlvz45ersqk_SO0kNcyN_EM1tJe3mXeFksw/viewform

在我的AppEngine / Python 2.7代码中,我只能访问此ID - ' 1d2Y9R9JJwymtjEbZI6xTMLtS9wB7GDMaopTQeNNNDD' - 我的问题是如何从这个原始定义ID到视图ID - ' 1FAIpQLScINR5rudwEKNVwlvz45ersqk_SO0kNcyN_EM1tJe3mXeFksw'

我尝试使用Google Drive v2和v3 REST API来检索'定义'文件,但响应没有参考(我可以看到)到这个'视图' ID。 我还尝试使用Google AppsScript FormApp API来检索'定义'表格,但这也没有包含参考(我可以看到)到'视图' ID。 在所有情况下,如果我使用'视图' ID为API的来源返回404错误,表明此观看次数为' ID不是Google云端硬盘文件的ID。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用Google Apps脚本发布Web应用程序(或使用执行API),以释放" getPublishedUrl"功能

function doGet(theRequest){
  var theDefinitionId = theRequest.parameters.formId;
  var thePublishedUrl = myAPI_(theDefinitionId);
  var output = ContentService.createTextOutput(thePublishedUrl);
  output = output.setMimeType(ContentService.MimeType.JSON);
  return output;
}

function myAPI_(theDefinitionId){
  var thePublishedUrl = null;
  try{
    var existingForm = FormApp.openById(theDefinitionId);
    thePublishedUrl = existingForm.getPublishedUrl();
  } catch (err){
    Logger.log(err);
  }
  var theReturn = {publishedUrl: thePublishedUrl};
  var theJSONReturn = JSON.stringify(theReturn);
  return theJSONReturn;
}