【发布时间】:2018-11-15 18:14:01
【问题描述】:
我正在为分类帐工作表编写 onEdit 函数。 我在一家音乐工作室工作,随着我们的成长和进步,我们逐渐增加了每首曲目的成本,以支付开销和新的工作室设备。 但是,我们希望保留以前客户的每首歌曲费率。 我发现做到这一点的最好方法是使用 vlookup 表搜索单独的价格日志表。 但我想自动记录新价格,以避免忘记价格何时更改或忘记一起记录。
对我来说理想的解决方案是:
[onEdit] 如果活动工作表是“设置”并且活动单元格是“C6”]
{将 C6 新值复制到名为“日志”的页面 B 列中的第一个空闲行}。
以下是我为艺术家自动添加不同时间的代码,最底部是我将新价格复制到“日志”的无效尝试。
我还制作了一个非常简单的样本表来更好地说明我的目标。
function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var sheetName = "Boring";
var sheet1 = ss.getSheetByName("Roster");
var sheet2 = ss.getSheetByName("Ledger");
var sheet3 = ss.getSheetByName("Setup");
var sheet4 = ss.getSheetByName("Invoice");
var sheet5 = ss.getSheetByName("Boring");
var Log = ss.getSheetByName("Log");
var r = s.getActiveCell();
var Change = sheet3.getRange('C6');
var row = r.getRow();
var time = new Date();
var sheet = s.getSheetName();
var letter = r.getColumn() ;
var Tracking = sheet1.getRange('E' + row.toString()).getValue();
var Editing = sheet1.getRange('F' + row.toString()).getValue();
var Mixing =sheet1.getRange('G' + row.toString()).getValue();
var Master =sheet1.getRange('H' + row.toString()).getValue();
var date = sheet2.getRange('C' + row.toString()).isBlank();
switch (sheet){
case'Roster':
switch(letter){
case 5 :
switch (Tracking){
case 1 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('S' + row.toString()).setValue(time);
break;
default :
if(sheet1.getRange('S' + row.toString()).getValue() > 0 ){
break;
} else{
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('S' + row.toString()).setValue(time);}
break;
case 5 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('T' + row.toString()).setValue(time);
break;
case "":
ss.getRange("S"+row).clearContent();
ss.getRange("T"+row).clearContent();
break;
}//switch tracking
break;
case 6:
switch (Editing){
case 1 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('U' + row.toString()).setValue(time);
break;
default :
if(sheet1.getRange('U' + row.toString()).getValue() > 0 ){
break;
} else{
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('U' + row.toString()).setValue(time);}
break;
case 4 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('V' + row.toString()).setValue(time);
break;
case "":
ss.getRange("U"+row).clearContent();
ss.getRange("V"+row).clearContent();
break;
}
break;
case 7 :
switch (Mixing) {
case 1 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('W' + row.toString()).setValue(time);
break;
default :
if(sheet1.getRange('W' + row.toString()).getValue() > 0 ){
break;
} else{
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('W' + row.toString()).setValue(time);}
break;
case 2 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('X' + row.toString()).setValue(time);
break;
case "":
ss.getRange("W"+row).clearContent();
ss.getRange("X"+row).clearContent();
break;
}
break;
case 8 :
switch(Master) {
case 1 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('Y' + row.toString()).setValue(time);
break;
case 2 :
time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy");
sheet1.getRange('Z' + row.toString()).setValue(time);
break;
case "":
ss.getRange("Y"+row).clearContent();
ss.getRange("Z"+row).clearContent();
break;
}
break;
}
break;
case'Setup':
switch (letter){
case 'C' :
switch (row){
case 6 :
var targetSheet = ss.getSheetByName("Log"); //gets the lgo sheet
var target = Log.getRange(Log.getLastRow() + 1, 1);// "log"
var nextCell = r.offset(0, 1);
sheet3.getRange(3, 6, 1).copyTo(target, {contentsOnly:true});
break;}}
}
}
这是我的电子表格的一个极其简化的版本。 https://docs.google.com/spreadsheets/d/1i192uK-a-ALim7pvL-mkty_1nh_m9aghvmrxmiiRYKs/edit?usp=sharing
如果您需要查看,这是我的实际工作表 https://docs.google.com/spreadsheets/d/1PK0-WsfdRtFooLWb1GUCHjxGoQJHFLAg4CVh8pmuEO4/edit?usp=sharing
【问题讨论】:
-
@TheMaster 当然可以!那将是一件好事!它什么都没有,我不知道为什么。其他每一行代码都完全按照我的预期工作!然而,“价格记录器”完全没有做任何事情。它不会在我的工作表上添加任何我可以看到的地方
-
你做的正是我想要的!我可以编辑其余的做我想做的事!非常感谢!
标签: javascript excel google-apps-script google-sheets google-sheets-api