【问题标题】:Prefill Google Forms with current date by manipulating p refill url string通过操作预填充 url 字符串以当前日期预填充 Google 表单
【发布时间】:2017-09-12 17:39:11
【问题描述】:

您好,我研究了很多方法,了解如何在日期输入字段中使用当前日期预先填写谷歌表单。
我想出的最好方法是创建一个预填表单并使用预填谷歌表单 url 并动态更改 url 字符串以插入当前日期作为参数之一。 我尝试使用链接引用创建一个页面(谷歌应用程序脚本),我试图将链接 href 设置为包含当前日期参数但没有成功的新字符串。我已经有一个函数(在 code.gs 中),它采用 google 表单 url 并正确操作它以在 url 字符串中输入当前日期作为参数之一。但是在链接href中设置这个新的url字符串不起作用。

您能否就此提供建议(示例很好),或者以更简单的方式在 Google 表单上预填当前日期。 最受赞赏的。

/* NOTE!!! Make a copy of this file - Choose "File" "Make a copy..."
 * Then publish this as a Web App - 
 * To Publish Choose the menu item "Publish" then "Deploy as Web App"
 * to see the Web App click the link named - "Test web app for your latest code"
 *
 */

var EXAMPLE_OF_GLOBAL_VARIABLE;//Use all capital letters so that you know it is a global
var n3;
function doGet() {
var template = HtmlService.createTemplateFromFile('Index');


// Build and return HTML in IFRAME sandbox mode.
return template.evaluate()
  .setTitle('Web App Window Title')
 .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  };

  //Attribute - This code is modified from the Google Help for a web app
    //Help - Welcome Screen - Web App
 function getFolderContents() {
 var contents,file,files,folderId,numFiles,topFolder;

 folderId = 'root'; //Set this as the default for an example
 topFolder;
 contents = {
  children: []
  };

 if (folderId == 'root') {
topFolder = DriveApp.getRootFolder();
} else {
// May throw exception if the folderId is invalid or app
// doesn't have permission to access.
topFolder = DriveApp.getFolderById(folderId);
}
contents.rootName = topFolder.getName() + '/';

 files = topFolder.getFiles();
 numFiles = 0;

while (files.hasNext() && numFiles < 20) {
file = files.next();
contents.children.push(file.getName());
numFiles++;
};

return contents; 
 };
function getnowx() {
var today = new Date();
 var dd = today.getDate();
 var mm = today.getMonth()+1; //January is 0!
 var yyyy = today.getFullYear();

if(dd<10) {
      dd = '0'+dd
      } ;
    if(mm<10) {
      mm = '0'+mm
      }; 
   today = yyyy + '-' + mm + '-' + dd;
  var n ='https://docs.google.com/forms/d/e/1FAIpQLSd5By6kDoO_T4WZWk5VjKs6WD5RVuC_06RX7jDv19jS-KR8sg/viewform?usp=pp_url&entry.1374707830=xxxx-xx-xx&entry.406706983&entry.1232084117&entry.769389513&entry.104847992';
     var n1 = n.replace("xxxx-xx-xx",today);  
      return n1;
       };

我的 javascript 部分

 <script>
     function updateDisplay(contents) {
     var headingText = "Displaying contents for " + contents.rootName + " 
    folder:";
     document.getElementById('main-heading').textContent = headingText;
     for (var i = 0; i < contents.children.length; i++) {
     var name = contents.children[i];
  document.getElementById('results').insertAdjacentHTML('beforeend', '<div>' 
  + name + '</div>');

   }

  function updateDisplay2(n5) {

   var linkButton = document.getElementById("link-button");
   linkButton.setAttribute('href', n5); 
   document.getElementById('link-button').textContent = linkText;
   }

  window.getTheData = function() {
  google.script.run
   .withSuccessHandler(updateDisplay)
  .getFolderContents();

    };

  window.getnowx2 = function() {
  google.script.run
  .withSuccessHandler(updateDisplay2)
  .getnowx();
  }
   </script>

【问题讨论】:

  • 您能否提供url 以及code.gs 的快照
  • 我复制了一段网上的代码,修改了一下。
  • 我如何向这个论坛添加快照?
  • 尝试在此处添加,但文本错误太长
  • 编辑问题以添加它

标签: javascript date google-apps-script web-applications google-forms


【解决方案1】:

你能不能试着改一下

window.getnowx2 = function() {
  google.script.run
  .withSuccessHandler(updateDisplay2)
  .getnowx();
  }

  google.script.run
  .withSuccessHandler(updateDisplay2)
  .getnowx();

在第一条语句中您将函数分配给变量的原因 window.getnowx2 但不调用它。在第二个语句中,您实际上会调用它。 抱歉,我不太确定这一点,如果这不起作用,会有更多知识渊博的人来解决这个问题。

【讨论】:

    【解决方案2】:

    Per Chance 在堆栈交换中遇到了一些代码,并且可以正常工作。很简单就是不知道怎么做。我的 getnow 函数采用预填表单 url 和字符串操作来插入当前日期,这样我就可以自动获取带有当前日期的谷歌表单。

    function doGet() {
        var url = getnowx();
        return HtmlService.createHtmlOutput(
       "<a href='" + url + "?page=1'>Mylabel</a> <br><a href='" + url + "?
        page=1'>MyLABEL2</a>");
    
        };
    
    
    function getnowx() {
       var today = new Date();
         var dd = today.getDate();
         var mm = today.getMonth()+1; //January is 0!
         var yyyy = today.getFullYear();
    
        if(dd<10) {
              dd = '0'+dd
              } ;
            if(mm<10) {
              mm = '0'+mm
              }; 
           today = yyyy + '-' + mm + '-' + dd;
          var n = 'https://docs.google.com/forms/d/e/1FAIpQLSd5BykDoO_T4WZWk5VjKs6WD5xxC_06RX7jDv19jS-KvR8sg/viewform?usp=pp_url&entry.1374707830=xxxx-xx-xx&entry.406706983&entry.1232084117&entry.769389513&entry.104847992';
         var n1 = n.replace("xxxx-xx-xx",today);  
        return n1;
       };
    

    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 1970-01-01
      • 2012-07-18
      • 2012-07-20
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多