Google :识别代码的性能/执行速度瓶颈部分。在技术方面,已经有人在这方面取得了普遍的成功?你能分享你的例子吗?
下面是我从Google ClassRoom输出HTML网页的小脚本。我现在对这些技术一无所知,但我想在学习上取得进步。
此脚本要输出的表行最多为100-150行。无法理解为什么脚本运行超过5-8分钟来完成它的工作&最终输出100-150行HTML表。
也许我用错了数组什么的?或者是谷歌应用程序脚本的本质是缓慢运行的整体?
function doGet() {
var res = listCoursesHTML();
var html = HtmlService.createHtmlOutput();
html.append("<table border = \"1\">");
html.append("<tr><th>Имя преподавателя</th><th>Почта</th><th>Название курса</th><th>Название ОП (Учебная группа)</th></tr>");
for(result in res)
{
html.append("<tr><td>"+res[result].Name +"</td><td>"+res[result].email +"</td><td>"+res[result].courseName +"</td><td>" +res[result].courseDescription+"</td></tr>");
}
html.append("</table>");
//return HtmlService.createHtmlOutput(out[0]);
return html;
}
function listCoursesHTML() {
var courses = [];
var ownerId = [];
var pageToken = null;
var optionalArgs = {
pageToken: pageToken,
pageSize: 9999
};
var results = [];
while (true) {
var response = Classroom.Courses.list(optionalArgs);
// @ts-ignore
var courses = response.courses;
if (!pageToken) {
break;
}
}
if (courses.length === 0) {
Logger.log("No courses found.");
} else {
Logger.log("Courses:");
// @ts-ignore
for (course in courses) {
// @ts-ignore
results.push({
"Name": getName(courses[course].ownerId),
"email": getEmail(courses[course].ownerId),
"courseName": courses[course].name,
"courseDescription": courses[course].description
});
}
}
return results;
}
function getEmail(id) {
return Classroom.UserProfiles.get(id).emailAddress;
}
function getName(id) {
return Classroom.UserProfiles.get(id).name.fullName;
}发布于 2021-02-08 10:08:23
应用程序脚本为最佳实践提供了一个很好的指南,以保持代码的整洁,特别是为了保持代码的效率。
while(True))时,请非常小心,并尝试将其替换为if if(pageToken)或时间(取决于变量while(pageToken) )。for循环或forEach循环。https://stackoverflow.com/questions/66086251
复制相似问题