如何通过修改存储的表单来制作动态谷歌表单

时间:2014-01-30 16:22:20

标签: google-apps-script google-form

我正在尝试基于存储的表单创建动态表单。 我写的代码不起作用。

当获得表单填写的用户运行时, 它应首先修改所有文本,并用根据上次提交确定的关键字替换单词kkkk。

如果无法完成,那么我希望在提交时将表单修改为下次打开时。那可能吗。

我知道onOpen()和onSubmit()中的代码没有修改表单的权限。所以我创建了自己的modifyForm()函数,并为From-Form On-​​Submit添加了一个触发器。还是行不通。

当我将触发器设置为On-Form On-​​Open时,代码DID工作,但仅当我关闭表单并重新打开它进行编辑时。 - 记录了这种行为。所以,再一次,我正在寻找一种方法,每次运行表单时,或者每次提交表单时,都会动态修改它。

function onModify(){
    var form = FormApp.getActiveForm();

    var imgURL = "http://whatever.com/someimg.jpg";
    var img = UrlFetchApp.fetch(imgURL);
    // i first check that there is an image item in the current form and then
    var imgItem = form.getItems(FormApp.ItemType.IMAGE)[0];
    imgItem.setImage(img);

    var keyword = "aaaa"; //getKeyword(); // some text returning function
    var items = form.getItems();
    for (i=0; i<items.length; i++){
       var title = items[i].getTitle();
       title = title.replace("kkkk", keyword); 
       items[i].setTitle(title);
    }

    return form;
}

感谢您提供任何帮助!!

1 个答案:

答案 0 :(得分:0)

仅在Google表单上无法使用。

所以我的解决方案是创建表格的四个存储副本替换&#34; kkkk&#34;关键字提前,所有进入相同的电子表格,但不同的表格,并在一个单独的网站上我决定在python中通过重定向向用户呈现的表单副本。

我必须存储某种标识,以便用户不会获得两种类型的表单(但这是一个单独的问题)。