javascript - 使用 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!
}
我确实有在我的编码中广泛评论的习惯,所以希望这不会让你失望。因为我总是看不到一行的开始和结束(因此代码块的星号和结尾)我使用注释来说明我是什么,以及在哪里
如果可能,请通过电子邮件向我发送一些修复程序,以及我的错误在哪里(因为我的语音程序可以更轻松地朗读电子邮件。
提前感谢所有;)
解决方案
推荐阅读
- python - 如何在已安装的 Python Intrepreter 版本中选择?
- python - VS Code 上的 `Module 'cv2' has no 'cvtColor' member pylint(no-member)`
- forms - 我需要在 6 个字母后切换到手机上的纯数字键盘输入
- reactjs - 自定义/禁用 Material-UI 对话框的触控机制
- c++ - Windows 10 上的 Linphone 桌面
- sql-server - 使用存储过程设置变量而不打印输出
- r - “R CMD check”在使用“devtools::test()”时抛出警告,但允许“test()”,但需要使用完整的函数名
- excel - Countif 参考不同的工作表
- c# - 如何遍历所有 Assets 文件夹和子文件夹并列出此文件夹中的所有预制件?
- django - 如何在多个模板的基本模板中使用 views.py 中的变量?