![](/img/trans.png)
[英]Google script for sheets not copying formulas inside cells, only the values
[英]Run a script in Google Sheets that generates formulas into cells when a specific cell is not empty
我正在尋找在編輯 Col15 時在 Col16 和 Col17 中生成 2 個公式的腳本。 我的谷歌函數公式是:
我需要為 5 張名為“Miriam”、“Elisa”、“Victor”、“Hanane”、“Sarah”的工作表運行此腳本。
function onEdit(event) {
// assumes source data in sheet named Elisa-Miriam-Victor-Hanane-Sarah-Apoorva
// target sheet of move to named Archive
// getColumn with check-boxes is currently set to column 2 or B
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
// When a client is mentioned in Col3, fill automatically Col23 or W by the PM name and generate the checkbox from data validation in Col2 or B
var lastRow = s.getLastRow();
var col23 = s.getRange(lastRow, 23).getValue();
if (r.getRow() == lastRow && r.getColumn() == 3 && col23 == ""){
s.getRange(lastRow, 23).setValue(s.getSheetName());
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build()
s.getRange(lastRow,2).setDataValidation(rule);
}
// Fill automatically Columns P and Q when PO number is provided in Column O.
//In P: generates the date of when the PO is mentioned; in Q: it generates the PO folder name
var sh=event.range.getSheet();
var namesA=["Miriam","Elisa","Hanane","Sarah","Apoorva","Victor"];
if(namesA.indexOf(sh.getName())!=-1 && e.range.columnStart==15) {
event.range.offset(0,1).setValue(new Date()).setNumberFormat("yyyy-MM-dd");
event.range.offset(0,2).setFormula(Utilities.formatString('=CONCATENATE(P%s,"-",E%s,P%s)',event.range.rowStart,event.range.rowStart,event.range.rowStart));
}
// Archive a project with checked box from Archive Sheet
if((s.getName() == "Miriam"||s.getName() == "Elisa"||s.getName() == "Hanane"||s.getName() == "Sarah"||s.getName() == "Apoorva"||s.getName() == "Victor")&& r.getColumn() == 2 && r.getValue() == true) { // copy past every time a new PM-sheet is added
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
// Unarchive a project from Archive sheet to respective owner
else if(s.getName() == "Archive" && r.getColumn() == 2 && r.getValue() == false) {
var row = r.getRow();
var nameColumn = 23;
var name = s.getRange(row, nameColumn).getValue();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName(name);
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
我設法在 Col16 中生成了 Col15 的編輯日期。 但我不明白為什么該腳本不適用於帶有 concatenate formula 的 Col17 。
嘗試這個:
function onEdit(e) {
var sh=e.range.getSheet();
var namesA=["Miriam","Elisa","Hanane","Sarah","Apoorva","Victor"];
if(namesA.indexOf(sh.getName())!=-1 && e.range.columnStart==15) {
e.range.offset(0,1).setValue(new Date()).setNumberFormat("yyyy-MM-dd");
e.range.offset(0,2).setFormula(Utilities.formatString('=CONCATENATE(P%s,"-",E%s,P%s)',e.range.rowStart,e.range.rowStart,e.range.rowStart));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.