【发布时间】:2018-12-22 23:28:42
【问题描述】:
这是我第一次使用 JS 或 Apps 脚本,我编写了一个工作脚本,它读取数据行,并根据每行中的一个值,将新行写入第二张表,如下所示:
(我已经简化了脚本,只包含了两个案例来演示转换——“输入”工作表有行,每行都有一个值“带”;该函数检查这个带值,并根据哪个带,将一组行写入输出)
function convertToOutput() {
var sheet = ss.getSheetByName('Input');
var output = ss.getSheetByName('Output');
var last = sheet.getLastRow();
output.getRange('A2:P').clearContent();
output.getRange('A2:P').setNumberFormat('@STRING@');
for(var i=2;i<last+1;i++){
var courseCode = sheet.getRange(i,1).getValue();
var sectionID= sheet.getRange(i,2).getValue();
var band = sheet.getRange(i,3).getValue();
if( band == 'A')
{
// insert rows for band into output
var periodID = '1';
var cycleDay = "#10100";
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
var periodID = '2'
var cycleDay = "#00001";
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
var periodID = '7'
var cycleDay = "#01000";
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
}
if( band == 'B')
{
// insert rows for band into output
var periodID = '2';
var cycleDay = "#10100";
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
var periodID = '3'
var cycleDay = "#00001";
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
var periodID = '7'
var cycleDay = "#00010"
output.appendRow([courseCode,sectionID,periodID,cycleDay]);
}
它按预期工作,但现在我让它为所有读/写调用谷歌应用程序;我已经阅读了this answer 和these best practices,但我还没有找到一个与我正在做的转变足够接近的例子,以便能够弄清楚如何在没有帮助的情况下应用这些实践。
如何使用批处理或缓存服务进行重构,以减少我的函数进行的调用?
【问题讨论】:
标签: optimization google-apps-script google-sheets