首页 > 解决方案 > 使用 for 和 case 循环在 google 表格和电子表格之间进行排序和移动

问题描述

下面是一些我现在尽力拼凑起来的脚本。但我在法律上是盲人,需要完成一些自动化(因此这个脚本),当我进入谷歌脚本编辑器时,它不断抛出错误“缺失;行前......”但我已经检查过,并仔细检查过,并且从我能看到的所有“;” 应该在里面的是 ;(! .

作为一名 VBA 编码员,我可以通过它完成大部分工作,但我选择了 Google 的表格和表单,所以现在需要掌握这些该死的 JavaScript 内容。

有人可以花点时间看看这个,并概述错误在哪里吗?

这段代码大部分来自堆栈溢出的点点滴滴,看看我是否可以把它弄明白并自学,但我现在真的需要一些帮助(以一种让我同时学习的方式)。

这个脚本的概念最终是接受表单提交并根据“courseChoices”将它们分类到电子表格上的其他工作表中,然后通过“Locations”进一步进行

function change(e) { var ss = SpreadsheetApp.getActiveSpreadsheet();

`` var sourceSheet = ss.getSheetByName('Form Responses 1');

  var sourceRows = sourceSheet.getDataRange();
 var numSourceRows = sourceRows.getNumRows();
 var sourceRowValues = sourceRows.getValues();

 var rowsTransferred = 0;
 for (var i = 0; i <= numSourceRows - 1; i++) {
  var thisSourceRowValue = sourceValues[i];
  // See if the course is a multiple choice of courses
  // in this case column 8  (array 7)
  if (thisSourceRowValue[7].indexOf(",") < 0) {
   // Is  not Multiple choice
   Var CourseChoices = thisSourceRowValue[7]  
  }
  else{
   var courseChoices = thisSourceRowValue[7].split(","); 
   for(var x = 0; x <= thisSourceRowValue[7].indexOf(","); x++) 
    switch(courseChoices(x)) {
     case courseChoices(x).indexOf("Dual") > -1;
     case courseChoices(x).indexOf("Childhood") > -1;
      var Target = "Dual Diploma";
      var courseName = "Dual Diploma in Early Childhood Education and Care";
     break;
     case courseChoices(x).indexOf("Sector") > -1;
      var Target = "Adv Sector";
       var courseName = "Advanced Diploma in Community Sector Management";
     break;
     case courseChoices(x).indexOf("Adv") > -1;
      var Target = "Adv Management";
      var courseName = "Advanced Diploma in Leadership and Management";
     break;
     case courseChoices(x).indexOf("Business") > -1;
      var Target = "CertIII Business";
       var courseName = "Certificcate III in Business";
     break;
     case Default;
      var Target = "Other";
      var courseName = courseChoices(x);
    }
    // checked all multiple choices
   }
   // Made sure we have ALL Choices now
  }
  // See if the sheet exists do more stuff
  if (!ss.getSheetByName(Target)) { 
   // Tab does not exist, so create it
   ss.insertSheet(Target);
   // Ensured Target Tab Exists
   // Insert first row as headers   
   // sort order of columns ....
   var range_input = sourceSheet.getRange("A1:N1");
   var range_output = Target.getRange("A1");
   //sort columns into new orders
   var keep_columns = [0,1,2,3,4,5,10,9,8,11,6,7, 12];
   //Now copy the columns into the target in the new order
   copyColumnNumbers(range_input, range_output, keep_columns);
   }
  //  set our target sheet and target range
  var colNumber = sourceSheet.getLastColumn()-1;
   var targetSheet = ss.getSheetByName(Target);
  var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1, 1, 1,     colNumber);
  //  get our source range/row
   var sourceRange = SourceSheet.getRange(rowIndex, 1, 1, colNumber);
  var targetRows = targetSheet.getDataRange();
  var numTargetRows = targetRows.getNumRows();
  var targetValues = targetRows.getValues();
  for (var y = 0; y <= numTargetRows - 1; y++) {
   var thisTargetRow = targetValues[y];
   // See if the first name, last name and Email are the same
   if (thisTargetRow[2] == thisSourceRow[2] && thisTargetRow[3] ==             thisSourceRow[3] && thisTargetRow[5] == thisSourceRow[5]) {
    // Record Exists, so just alter the coursename 
    thisTargetRow[7] == courseName;
    break;
   }Else if (targetRow[0] == ""){
    // WE have come to a blank line in the target sheet
    // Alter Course to proper Name
    thisTargetRow[7] == courseName;
    // Add new record in correct column orders
   var range_input = thisTargetRow;
   var range_output = thisTargetRow
   //sort columns into new orders
   var keep_columns = [0,1,2,3,4,5,10,9,8,11,6,7, 12];
   //Now copy the columns into the target in the new order
   copyColumnNumbers(range_input, range_output, keep_columns);
    break;
   }
   // records checked in target
  }
  // We have checked all the records now in the Source Sheet
 }
 // ALL DONE!
 }

我确实有在我的编码中广泛评论的习惯,所以希望这不会让你失望。因为我总是看不到一行的开始和结束(因此代码块的星号和结尾)我使用注释来说明我是什么,以及在哪里


如果可能,请通过电子邮件向我发送一些修复程序,以及我的错误在哪里(因为我的语音程序可以更轻松地朗读电子邮件。

提前感谢所有;)

标签: javascriptgoogle-spreadsheet-apigoogle-sheets-api

解决方案


推荐阅读