Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 基于谷歌表单中的单元格更改表单上的问题_Google Sheets_Google Forms - Fatal编程技术网

Google sheets 基于谷歌表单中的单元格更改表单上的问题

Google sheets 基于谷歌表单中的单元格更改表单上的问题,google-sheets,google-forms,Google Sheets,Google Forms,对编码完全陌生,我一直在自学。我对自己迄今为止所取得的成就感到非常高兴,现在我想拓展我的学习领域 所以我组织青少年足球比赛。球队通过谷歌表格进入比赛。表格进入谷歌表格,然后我使用公式确保我可以看到每个年龄组有多少队参赛。每个年龄组在锦标赛中可以拥有最多数量的球队。指向活动窗体的链接是 我想做什么 目前,当一个年龄组接近满员时,我必须手动编辑表单。例如,俱乐部最多可以进入两支球队。当只剩下一个空格时,我当前必须手动删除输入2个团队的选项,以确保可以输入1个团队。这有时会导致我不能足够快地完成任务,

对编码完全陌生,我一直在自学。我对自己迄今为止所取得的成就感到非常高兴,现在我想拓展我的学习领域

所以我组织青少年足球比赛。球队通过谷歌表格进入比赛。表格进入谷歌表格,然后我使用公式确保我可以看到每个年龄组有多少队参赛。每个年龄组在锦标赛中可以拥有最多数量的球队。指向活动窗体的链接是

我想做什么

目前,当一个年龄组接近满员时,我必须手动编辑表单。例如,俱乐部最多可以进入两支球队。当只剩下一个空格时,我当前必须手动删除输入2个团队的选项,以确保可以输入1个团队。这有时会导致我不能足够快地完成任务,即使只有1个可用空间,也会有2个团队进入。所以一切都变得有点混乱

那么-有没有代码,当工作表中的一个单元格等于一个特定的数字时,google表单会自动删除输入2个团队的选项,这样我就不会有这个问题

其次

当某个年龄组已满时,我必须手动编辑表格,将该年龄组未来的任何条目引导到表格的不同部分,以便团队填写后备名单表格。就像上面所说的,我有时做得不够快。那么,是否有任何代码可以用于根据表单中单元格的值自动将用户引导到表单的不同部分

总而言之

我需要的一件事是根据图纸中的单元格值自动删除表单中的选项。其次,根据表单中的单元格值自动重定向到表单中的不同部分


我对这一切都是陌生的,所以请善待我!)

您希望根据表单提交中产生的某些值对表单进行更改。这个答案确实试图解决表单更改问题(至少是因为表单结构未知),但重点是识别将导致脚本修改表单的阈值事件

阈值

您希望确定提交新表单后“剩余位置数”为1或0的年龄组

考虑到可能有很多方法可以做到这一点,这个脚本就是一种方法

关键要素

  • 该功能必须安装为
    onFormSubmit
  • 实际的表单提交似乎并不重要(尽管这可能会随着脚本的进一步增强而改变)
  • 从概览中检索到的数据包括B->F列,因为一旦评估了值(F列),就必须确定相关的年龄组(B列)
  • 使用循环IF语句和logger语句来标识已达到阈值的实例-这是最简单的方法;其他方法,如
    indexOf
    和/或
    switch
    可用于识别阈值和产生的动作
  • 请注意,将返回阈值的所有实例;结果不限于最新表单响应生成的特定实例。如有必要,这件事可能会做

函数so6047592901(){
//OnForm样本提交检查
var ss=SpreadsheetApp.getActiveSpreadsheet();
var overview=ss.getSheetByName(“overview”);
//获取数据
var startRow=3
var startCol=2
变量行=19
var cols=5
var data=overview.getRange(startRow、startCol、rows、cols);
//Logger.log(“调试:数据范围=“+data.getA1Notation());
var values=data.getValues();
//Logger.log(“调试:数值=”+数值)
//左侧位置的测试=1
var test1left=“1”;
//左侧位置的测试=0
var test0left=“0”;
对于(var i=0;iYou可以使用应用程序脚本自动编辑表单)。
例如,假设我有5个位置可供前5个人使用我的表单申请。在申请了所有可用位置后,我想从表单中删除“申请点”项目。我可以通过在每次有人提交响应时运行检查功能来实现这一点

例子:
  • 从您的回复电子表格中
  • 在脚本中,创建一个函数来检查(true或false)是否仍然有可用的斑点
  • 功能点可用(ss){
    var-maxpots=5;
    //获取响应表。
    var sheet=ss.getSheetByName(“表单响应1”);
    var lastRow=sheet.getDataRange().getLastRow();
    //数一数声称的污点
    var a1Notation=“B2:B”+最后一行;
    var索赔=0;
    ss.getRange(a1Notation).getValues().forEach(
    (索赔)=>{
    如果(索赔=“是”){
    主张++
    }
    退货索赔
    });
    //如果存在可用点,则返回true,否则返回false
    如果(索赔
  • 创建将在表单提交时触发的功能:
  • 函数changeForm(){
    var ss=SpreadsheetApp.getActiveSpreadsheet();
    var form=FormApp.getActiveForm();
    if(spotsavaailable(ss)=false){
    //如果没有更多斑点,则从表格中删除索赔斑点项目
    var items=form.getItems();
    //项目索引一(1)是我们的多项选择问题
    //您可以通过id或索引获取项目。
    表格.删除第(1)项;
    }
    }
    
  • 运行“表单提交”
  • 放松点,知道只有最大点数可以申请,你的脚本会帮你处理好的

  • 笔记: 请注意,这只是一个示例,根据您的特殊需要,您可以使用应用程序脚本服务中的任何可用方法,如下所述


    推荐阅读:

    • <
      function so6047592901() {
      
        // sample of onFormSubmit to check 
      
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var overview = ss.getSheetByName("Overview");
      
      
        // get the data
        var startRow=3
        var startCol=2
        var rows = 19
        var cols = 5
        var data =  overview.getRange(startRow, startCol, rows, cols);
        //Logger.log("DEBUG: data range = "+data.getA1Notation());
        var values = data.getValues();
        //Logger.log("DEBUG: number values = "+values)
      
      
        // test for places left = 1
        var test1left = "1";
        // test for places left = 0
        var test0left = "0";
      
        for (var i=0;i<values.length;i++){
          // test for the Age Group
           var ageGrp = values[i][0]
          if (values[i][4] == test1left) {
            Logger.log("DEBUG: Places Left = "+values[i][4]+", i:"+i+" , Age group is "+ageGrp);
          }
          if (values[i][4] == test0left){
            Logger.log("DEBUG: Places Left = "+values[i][4]+", i:"+i+" , Age group is "+ageGrp);
          }
        }
      }