【问题标题】:How to fill out multiple sheets everytime a Google Form is submitted每次提交 Google 表单时如何填写多张表格
【发布时间】:2013-07-16 19:26:21
【问题描述】:

我创建了一个非常简单的 Apps 脚本,它基于通过 Google 表单提供的答案,制作模板的副本(表单答案电子表格中的表格)并用输入的信息填写它。这是代码的一部分:

function fichas() {
var formato = SpreadsheetApp.getActiveSpreadsheet();
var ficha = formato.duplicateActiveSheet();
var respuestas = SpreadsheetApp.openById('ID').getSheetByName('Form Responses');

var name = respuestas.getRange(**2**, 5);
var apellido = ficha.getRange(4, 2);
name.copyTo(apellido);

var name2 = respuestas.getRange(**2**, 6);
var apellido2 = ficha.getRange(4, 3);
name2.copyTo(apellido2);

粗体数字代表第一个用户的信息。我设置了一个触发器,在提交表单时运行脚本。现在,我不知道如何移动到下一行以使用下一个用户的信息(换句话说,我想在每次脚本运行时自动将该粗体数字加一)。是否可以?我是新手,我正在努力学习,但有时太难了!

非常感谢您的帮助!

豪尔赫

【问题讨论】:

    标签: google-apps-script google-sheets google-forms


    【解决方案1】:

    您应该使用所有用户通用的变量,并且在每次提交表单时递增。有几种可能的方法来实现这一点,为什么不试试script Properties ? 它实现起来相当简单:

    首先用这样的语句初始化它:

    ScriptProperties.setProperty('rowValue', 1);// this must happen only once, you could insert it in a small function to "initialize"
    

    然后在您的代码中,您可以使用检索它

    var rowValue = Number(ScriptProperties.getProperty('rowValue'));
    

    使用rowValue++ 增加它并将其写回存储...请记住,您始终可以直接在脚本属性(脚本编辑器>文件>项目属性>项目属性)中编辑此值

    ScriptProperties.setProperty('rowValue', rowValue);
    

    如果您永远不会让多个用户同时发送表单,这将是完美的。 在这种情况下,脚本存在混合值的风险......

    还有另一种服务旨在处理这种情况:the lock service

    该文档给出了一个关于如何实现它的明确示例:它就像这样:

     var lock = LockService.getPublicLock();
     try {
       lock.waitLock(10000);
     } catch (e) {
       Logger.log('Could not obtain lock after 10 seconds.');
     }
    

    做你必须做的事情,增加计数器......当你完成使用

    lock.releaseLock();
    

    它可能看起来很复杂,但实际上并不复杂 ;-) 它在所有可能的情况下都能完美运行......试试吧。

    【讨论】:

    • 非常感谢您的帮助!正如我之前提到的,我正在学习这样做,但我根本没有编程经验......老实说,我试着按照你的建议去做,但我不太清楚该怎么做,所以显然我做不到这行得通。请你帮助我好吗?非常感谢您的时间和精力!
    • “写回存储”是什么意思?我可以让脚本填写我的模板,但我不能为后续模板增加 rowValue。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多