我在Google文档中有一个电子表格。它有两张表" projectList"和" projectListCompleted"。当我将特定列的内容更改为"已完成"我已经将代码从projectList移动到projectListCompleted。如果我去"已完成"选择并将同一列更改为ANYTHING ELSE然后将该行移回我的工作项目表。好吧,我正在尝试使代码更健壮。我正在创建一个名为' projectMover'我想打电话给它,并告诉它要采取的行动......已完成,已取消,有效等等,并让它根据此做出决定。
我用来将项目(即Active ROW)从一个工作表移动到另一个工作表的代码在这里:
function moveToNewSheet( myActiveSpreadsheet, myActiveSheet, myActiveRange, myTargetSheet )
{
var row = myActiveRange.getRow();
var numColumns = myActiveSheet.getLastColumn();
var targetSheet = myActiveSpreadsheet.getSheetByName( myTargetSheet );
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
myActiveSheet.getRange(row, 1, 1, numColumns).moveTo(target);
myActiveSheet.deleteRow(row);
// targetSheet.sort(1);
return target;
};
此代码效果很好。没问题。
但是我开始使用我的projectMover功能并且出现故障,因为我不了解API以及我想要的。我想要做的是拥有' projectMover'拨打' moveToNewSheet'码。这段代码传回了移动项目的范围应该是什么。我想访问该范围内的COLUMN G并插入当前日期,以便项目具有完成日期。但是,正如您在我的代码中所看到的,我并不十分了解如何访问该单元格。
有人有什么想法吗?
function projectMover( myActiveSpreadsheet, myActiveSheet, myActiveRange, myAction )
{
switch ( myAction )
{
case "Completed":
var myTarget = moveToNewSheet( myActiveSpreadsheet, myActiveSheet, myActiveRange, "projectListCompleted" );
var targetCell = myTarget.getCell(1,7);
targetCell.activate();
targetCell.setValue( "test" );
break;
default:
break;
}
// get targetSheet and sort it
};
答案 0 :(得分:0)
这是我用过的代码......
此功能获取当前ACTIVE工作表和当前ACTIVE范围的单元格,并将它们移动到需要的位置。在MY应用程序中,每个状态类型都有一个它所属的指定工作表,其中大多数状态属于我的projectStatus工作表。但是,例如,COMPLETED状态项目属于projectCompleted工作表,CANCELED状态项目属于projectCancelled工作表。这些连接在一个单独的工作表中进行,我称之为projectStatus,第1列是状态名称,第2列是状态所属的工作表,第3列是派生数 = COUNTIF(projectList!D:D,-insert)状态名称 - ),它会计算这些状态的数量。我在图表中使用了这些信息。
function projectMove( myActiveSheet, myActiveRange)
{
var curDate = Utilities.formatDate(new Date(), "CST", "MM/dd/yy hh:mm");
var wrkSprsht = SpreadsheetApp.getActiveSpreadsheet();
var wrkSht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(myActiveSheet);
var wrkRng = wrkSht.getRange(myActiveRange, 1, 1, 7);
var wrkValues = wrkRng.getValues();
var wrkProject =
{
priority: wrkValues[0][0],
title: wrkValues[0][1],
resource: wrkValues[0][2],
status: wrkValues[0][3],
assigned: wrkValues[0][4],
notes: wrkValues[0][5],
dateTime: wrkValues[0][6],
currentSheet: myActiveSheet,
targetSheet: targetStatusSheet( wrkValues[0][3] )
};
Logger.log(wrkProject);
var trgSht = wrkSprsht.getSheetByName( wrkProject.targetSheet );
var trgRng = trgSht.getRange(trgSht.getLastRow() + 1, 1);
wrkRng.moveTo(trgRng);
wrkSht.deleteRow(wrkRng.getRow());
var trgCell = trgSht.getRange(trgSht.getLastRow(),7);
trgCell.setValue( curDate );
trgSht.sort(1);
};
这是:
var wrkRng = wrkSht.getRange(myActiveRange, 1, 1, 7);
var wrkValues = wrkRng.getValues();
var wrkProject =
{
priority: wrkValues[0][0],
title: wrkValues[0][1],
resource: wrkValues[0][2],
status: wrkValues[0][3],
assigned: wrkValues[0][4],
notes: wrkValues[0][5],
dateTime: wrkValues[0][6],
currentSheet: myActiveSheet,
targetSheet: targetStatusSheet( wrkValues[0][3] )
};
wrkValues [row] [column](二维数组值)根据需要访问各个单元格。
https://developers.google.com/apps-script/reference/spreadsheet/range#getValues()
希望这有助于其他人。我花了很长时间看...