将活动单元格的值复制到 different/non 活动 sheet - 如何确定要使用哪个 target/destination sheet
Copy value of active cell to a different/non active sheet - How to determine which target/destination sheet to use
此脚本根据其旁边单元格中的值将活动单元格的值复制到另一个 sheet。
如果我在我的脚本中写下确切的单元格,它会起作用,但每次脚本是 运行,它都会基于不同的单元格。
我还需要微调目的地。
这里是:
function copytoTabs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Booking In');
var data = sheet.getActiveCell();
var value = ss.getSheetByName('Booking In').getActiveCell().getA1Notation();
var operator = data.offset(0, 1).getValue();
if (operator == "Michelle") {
var ts = SpreadsheetApp.getActiveSpreadsheet();
var tss = ts.getSheetByName('MICHELLE Schedule');
ts.setActiveSheet(ts.getSheetByName('MICHELLE Schedule'));
tss.getRange(1, 2).activate();
tss.getRange(value).copyTo(tss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
else if (operator == "Georgia") {
ss.setActiveSheet(ss.getSheetByName("GEORGIA Schedule"));
ss.getCurrentCell().offset(0, 1, 4, 1).activate();
ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
else if (operator == "Julie") {
ss.setActiveSheet(ss.getSheetByName("JULIE Schedule"));
ss.getCurrentCell().offset(0, 1, 4, 1).activate();
ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
ss.setActiveSheet(ss.getSheetByName('Booking In'), true);
}
您可以将 sheet 选项卡名称与对象中的运算符名称相关联,而不是使用多个 if / else 块。然后按运算符名称查找 sheet 选项卡名称。
function copytoTabs() {
var activeCell,objectOfMappedValues,operator,sheet,sourceSs,targetSheetTabName,trgtSh;
sourceSs = SpreadsheetApp.getActiveSpreadsheet();
objectOfMappedValues = {//This is an object literal - the word literal means that the values are
//hard coded here in the function as opposed to being set with code
"Michelle":"MICHELLE Schedule",
"Georgia":"GEORGIA Schedule",
"Julie":"JULIE Schedule"
}
activeCell = sourceSs.getActiveCell();
Logger.log('activeCell: ' + activeCell)
operator = activeCell.offset(0, 1).getValue();//Get the value of one cell
targetSheetTabName = objectOfMappedValues[operator];//Get the sheet tab name for this operator
Logger.log('targetSheetTabName: ' + targetSheetTabName)
trgtSh = ts.getSheetByName(targetSheetTabName);//Get the sheet tab to be the target to set a value
Logger.log('trgtSh.getName(): ' + trgtSh.getName())
trgtSh.getRange(activeCell.getA1Notation()).copyTo(trgtSh.getActiveRange())
}
此代码可能无法满足您的所有要求,但希望它能帮助您找到最终解决方案。
此脚本根据其旁边单元格中的值将活动单元格的值复制到另一个 sheet。
如果我在我的脚本中写下确切的单元格,它会起作用,但每次脚本是 运行,它都会基于不同的单元格。
我还需要微调目的地。
这里是:
function copytoTabs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Booking In');
var data = sheet.getActiveCell();
var value = ss.getSheetByName('Booking In').getActiveCell().getA1Notation();
var operator = data.offset(0, 1).getValue();
if (operator == "Michelle") {
var ts = SpreadsheetApp.getActiveSpreadsheet();
var tss = ts.getSheetByName('MICHELLE Schedule');
ts.setActiveSheet(ts.getSheetByName('MICHELLE Schedule'));
tss.getRange(1, 2).activate();
tss.getRange(value).copyTo(tss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
else if (operator == "Georgia") {
ss.setActiveSheet(ss.getSheetByName("GEORGIA Schedule"));
ss.getCurrentCell().offset(0, 1, 4, 1).activate();
ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
else if (operator == "Julie") {
ss.setActiveSheet(ss.getSheetByName("JULIE Schedule"));
ss.getCurrentCell().offset(0, 1, 4, 1).activate();
ss.getRange('\'Booking In\'!P12').copyTo(ss.getActiveRange(),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
ss.setActiveSheet(ss.getSheetByName('Booking In'), true);
}
您可以将 sheet 选项卡名称与对象中的运算符名称相关联,而不是使用多个 if / else 块。然后按运算符名称查找 sheet 选项卡名称。
function copytoTabs() {
var activeCell,objectOfMappedValues,operator,sheet,sourceSs,targetSheetTabName,trgtSh;
sourceSs = SpreadsheetApp.getActiveSpreadsheet();
objectOfMappedValues = {//This is an object literal - the word literal means that the values are
//hard coded here in the function as opposed to being set with code
"Michelle":"MICHELLE Schedule",
"Georgia":"GEORGIA Schedule",
"Julie":"JULIE Schedule"
}
activeCell = sourceSs.getActiveCell();
Logger.log('activeCell: ' + activeCell)
operator = activeCell.offset(0, 1).getValue();//Get the value of one cell
targetSheetTabName = objectOfMappedValues[operator];//Get the sheet tab name for this operator
Logger.log('targetSheetTabName: ' + targetSheetTabName)
trgtSh = ts.getSheetByName(targetSheetTabName);//Get the sheet tab to be the target to set a value
Logger.log('trgtSh.getName(): ' + trgtSh.getName())
trgtSh.getRange(activeCell.getA1Notation()).copyTo(trgtSh.getActiveRange())
}
此代码可能无法满足您的所有要求,但希望它能帮助您找到最终解决方案。