希望你们一切顺利。
我正在尝试为我的办公室写这个漂亮的脚本,因为我的同事缺乏一点纪律。
如果工作表中的列已被编辑,则应触发此脚本,但如果它在工作表编辑时触发,或者甚至可能在电子表格编辑中触发,则会触发该脚本。此脚本应查看该表中该列的值,以及其中是否有任何字符串"保持(i)","保持(ii)"或"暂停(iii)"然后应该用字符串" TBC"覆盖同一行上另一列(由用户选择)上的单元格。我尝试从谷歌和下面拼接这是我得到的,但因为我在这里显然不工作哈哈。任何帮助将不胜感激 !! :((
BorderLayout
我在google上的某个地方读到,如果电子表格已被编辑,那么命名函数OnEdit会使函数触发但它似乎无法正常工作。
答案 0 :(得分:0)
function OnEdit() {
var a=1;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var activeCell = activeSheet.getActiveCell();
//Check if the sheet is a JOb sheet and the cell us the status cell
if (activeSheet.getName().indexOf("Job ID") != -1 && activeCell.getRow() == 2 && activeCell.getColumn() == 15){
var switchValue = activeCell.getValue();
switch (switchValue){
case "On hold (i)":
case "On hold (ii)":
case "On hold (iii)":
case "To be assigned":
//Write date to active jobs sheet
addDateToActive("TBC");
break;
case "In progress":
var newDate = Browser.inputBox("Please enter report out date");
addDateToActive(newDate);
break;
default:
Browser.msgBox("GOTHERE");
}
}
}
function addDateToActive(input){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var activeCell = activeSheet.getActiveCell();
var jobid = activeSheet.getRange(2,1).getValue().toString();
var activeJobSheet = ss.getSheetByName("Active Jobs");
var activeJobs = activeJobSheet.getRange(1,1,activeJobSheet.getLastRow(),1).getValues();
activeJobs = ColumnToArray(activeJobs);
var jobrow = activeJobs.indexOf(jobid)+1;
if (jobrow == -1){
Browser.msgBox("Job Id not preent on Active Jobs sheet");
}else{
activeJobSheet.getRange(jobrow,15).setValue(input);
}
}
function ColumnToArray(columnData){
//Ensure that the data supplied is a column
if(columnData[0].length == 1){
//Convert column to array
var dataout = [];
for (var a = 0; a < columnData.length; a++){
dataout.push(columnData[a][0]);
}
}else{
throw new Error("Data Supplied to ColumnToArray was not a simple Column");
}
return dataout;
}