我正在编写一个脚本来复制工作表并将一些数据粘贴到工作表中。我必须制作C. 500份的表格,这样我才能改进我的代码并学习一些东西。
下面是从我的工作表中的命名范围中提取数据的代码,然后所有这些数据都会在我的脚本中的其他地方使用。
我的问题是 - 是否有更好/更有效的方式获取所有数据并进行管理?所有列都是并排的,所以我可以只用一次调用工作表来获取单个变量中的所有信息,但是使用[0],[1]引用等在代码中进一步管理数组是很困难的。 p>
var getTeachersNameReq = ss.getRangeByName('ERB Generator!teachersNameReq').getValues().filter(String); //Logger.log(getTeachersNameReq);
var getTeachersEmailReq = ss.getRangeByName('ERB Generator!teachersEmailReq').getValues().filter(String); //Logger.log(getTeacherEmailReq);
var getTeachersNameOpt = ss.getRangeByName('ERB Generator!teachersNameOpt').getValues().filter(String); //Logger.log(getTeachersNameOpt);
var getTeachersEmailOpt = ss.getRangeByName('ERB Generator!teachersEmailOpt').getValues().filter(String); //Logger.log(getTeachersNameOpt);
var getSubjectGroup = ss.getRangeByName('ERB Generator!subjectGroup').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getSubjectGroup);
var getSubjectCode = ss.getRangeByName('ERB Generator!subjectCode').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getSubjectCode);
var getSubjectName = ss.getRangeByName('ERB Generator!subjectName').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getSubjectName);
var getCoTeacher = ss.getRangeByName('ERB Generator!coTeacher').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getCoTeacher);
var getNewFileNames = ss.getRangeByName('ERB Generator!ERBFileName').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getNewFileNames);
var getERBexists = ss.getRangeByName('ERB Generator!ERBExists').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getERBexists);
var getCanTeacherEdit = ss.getRangeByName('ERB Generator!teacherCanEdit').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getCanTeacherEdit);
var getClass = ss.getRangeByName('ERB Generator!class').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getClass);
var getOBECExamSheet = ss.getRangeByName('ERB Generator!OBECExamSheet').getValues().slice(0, getTeachersNameReq.length); //Logger.log(getOBECExamSheet);
var getSemester = ss.getRangeByName('ERB Generator!semester').getValue(); //Logger.log(getSemester);
var getAcedimicYear = ss.getRangeByName('ERB Generator!acedimicYear').getValue(); //Logger.log(getAcedimicYear);
var getNameListFileID = ss.getRangeByName('File Links Data!nameListFileID').getValues().toString(); //Logger.log(getNameListFileID);
答案 0 :(得分:0)
getValues()
会降低您的脚本速度。
我通常只从表格中读取一次:
有些数据只是一个值。我使用JSON解析它:
"srtring"
500
如果我需要一个数组,我会用分号;
加入它并加入双引号""
"one,two,three,4,5,6"
将其放入括号:[]
并用逗号,
除以:
["srtring",500,"one,two,three,4,5,6"]
我通常使用相同的命名范围,因此我不需要更改代码:
var strData = ss.getRangeByName('eval').getValue();
要将数据作为数组获取,我使用此函数:
var data = JSON.parse(strData);
字符串和数字已准备好在脚本中使用,数组被拆分:
var array = data[2].split(';');
我还建议在文件打开时onOpen
读取数据并使用properties service来保存变量。