Python 其他:从子图纸到主图纸的不同范围
有一个主工作表,该工作表需要填充75个以上具有不同值的子工作表 编辑: 情况略有变化Python 其他:从子图纸到主图纸的不同范围,python,google-apps-script,Python,Google Apps Script,有一个主工作表,该工作表需要填充75个以上具有不同值的子工作表 编辑: 情况略有变化 'AGENTS' Agent Name Sheet ID 1 Tom Link to Tom's sheet 2 John Link to John's sheet 3 Mary Link to Mary's sheet etc. 链接至: 'MASTER SHEET' A C
'AGENTS'
Agent Name Sheet ID
1 Tom Link to Tom's sheet
2 John Link to John's sheet
3 Mary Link to Mary's sheet
etc.
链接至:
'MASTER SHEET'
A C D
Agent Name Value 1 from Agent's Sheet Value 2 from Agent's Sheet
1 D46 D53
2 D46 D53
3 D46 D53
此外,这是基于1个单元格,表示第1周。
因此,如果主机上的单元格F11是'39',它将从该周的代理表中提取数据
我试图将代码更改为:
var agentNames = SpreadsheetApp.getActive().getSheetByName('AGENTS').getRange('A2:A35').getValues();//these are the agent names
var agentID = SpreadsheetApp.getActive().getSheetByName('AGENTS').getRange('B2:B35').getValues();//here are their sheets
var agentSheets = SpreadsheetApp.openById(agentSheets[i][0]);
var array1 = [];
var array2 = [];
var array3 = [];
var masterSheet = SpreadsheetApp.getActive().getSheetByName('MASTER');
var sheetName = SpreadsheetApp.openById('B2') + 'F2' + (masterSheet.getRange('F11').getValue());
var temp;
for (var i = 0; i < numAgents; i++) {
temp = SpreadsheetApp.openById(agentSheets[i][1]).getSheetByName(sheetName).getRange('D46:D53').getValues();
array1.push([agents[i][0]]);
array2.push([temp[0][0]]);
array3.push([temp[7][0]]);
}
masterSheet.getRange(2, 1, numAgents, 1).setValues(array1);//Agent names
masterSheet.getRange(2, 3, numAgents, 2).setValues(array2);
masterSheet.getRange(2, 4, numAgents, 2).setValues(array3);
}
var agentNames=SpreadsheetApp.getActive().getSheetByName('AGENTS').getRange('A2:A35').getValues()//这些是特工的名字
var agentID=SpreadsheetApp.getActive().getSheetByName('AGENTS').getRange('B2:B35').getValues()//这是他们的床单
var-agentSheets=SpreadsheetApp.openById(agentSheets[i][0]);
var array1=[];
var array2=[];
var array3=[];
var masterSheet=SpreadsheetApp.getActive().getSheetByName('MASTER');
var sheetName=SpreadsheetApp.openById('B2')+'F2'+(masterSheet.getRange('F11').getValue());
无功温度;
对于(变量i=0;i
JavaScript是解决这个问题的下一个最佳解决方案吗?当脚本运行75页或更多页时,加载时间似乎很长。欢迎就如何进行提出任何建议或建议 7My非常简单的建议是,只要可能,尝试成批执行get和set,而不是在循环中。因此,通常最好构造一个Javascript数组,并一次性设置它。下面是我对一些代码的猜测:
function consolidate() {
var agents = [['John', 'sheet_id'],
['Mary', 'sheet_id'],
['Tom', 'sheet_id']];
var numAgents = agents.length;
var array1 = [];
var array2 = [];
var array3 = [];
var array4 = [];
var masterSheet = SpreadsheetApp.getActive().getSheetByName('MASTER');
var sheetName = 'WEEK ' + (masterSheet.getRange('A1').getValue());
var temp;
for (var i = 0; i < numAgents; i++) {
temp = SpreadsheetApp.openById(agents[i][1]).getSheetByName(sheetName).getRange('D41:D49').getValues();
array1.push([agents[i][0]]);
array2.push([temp[4][0], temp[0][0]]);
array3.push([temp[7][0], temp[8][0]]);
array4.push([temp[6][0]]);
}
masterSheet.getRange(2, 1, numAgents, 1).setValues(array1);
masterSheet.getRange(2, 4, numAgents, 2).setValues(array2);
masterSheet.getRange(2, 9, numAgents, 2).setValues(array3);
masterSheet.getRange(2, 14, numAgents, 1).setValues(array4);
}
函数合并(){
变量代理=['John','sheet_id'],
['Mary','sheet_id'],
['Tom','sheet_id'];
var numAgents=agents.length;
var array1=[];
var array2=[];
var array3=[];
var array4=[];
var masterSheet=SpreadsheetApp.getActive().getSheetByName('MASTER');
var sheetName='WEEK'+(masterSheet.getRange('A1').getValue());
无功温度;
对于(变量i=0;i
如果范围严格在D41:D49之间,这是一个非常好的代码,我刚刚尝试了您的代码,但是在D I和J列中出现了“未定义”消息。这是否意味着更改母版页上的范围是明智的?很抱歉,我获取数组索引的方法错误,请尝试编辑的代码。关于“如果范围严格在D41:D49之间”,您需要详细说明您的原始问题。是否有可能添加一个if。。其他的下一个语句,以确保如果找不到该周的代理名称,脚本将继续?(PS感谢您的编辑!)