首页 > 解决方案 > 如何在 Google Sheets 脚本中为已经应用了函数的单元格值 +1?

问题描述

大家好,我对编写脚本完全陌生(如果我使用了任何不正确的术语,我深表歉意)并且昨天设法将它拼凑在一起,但是最后称为“增量”的函数似乎不能作为这个脚本的一部分.

function ClearRange() {
//replace 'Sheet1' with your actual sheet name
var sheet = SpreadsheetApp.getActiveSpreadsheet()
//Inserts a row before populating it
sheet.insertRowAfter(37);
//the next three lines copy a preformatted line and paste it underneath
var source_range = sheet.getRange("A37:V37");
var target_range = sheet.getRange("A38:V38");
source_range.copyTo(target_range);
logData();
//the next lines clear the data form ready for new input
sheet.getRange('B5:D5').clearContent();
sheet.getRange('I5:O5').clearContent();
sheet.getRange('B11:G11').clearContent();
sheet.getRange('I11:P11').clearContent();  
sheet.getRange('B18:D18').clearContent();  
sheet.getRange('I18:K18').clearContent();  
sheet.getRange('B24:F24').clearContent();  
sheet.getRange('I24:M24').clearContent();
sheet.getRange('B31:G31').clearContent(); 
sheet.getRange('K28:Q28').clearContent(); 
}

function logData() {
// This will take the submitted data and put it into the proper row format

//This bit defines the destination cells
var sheet = SpreadsheetApp.getActiveSheet();
var thedateCell = sheet.getRange("A38");
var QuoteNoCell = sheet.getRange("B38")
var ClientCell = sheet.getRange("C38");
var ContactCell = sheet.getRange("E38");
var AddressCell = sheet.getRange("F38");
var QTOPDCell = sheet.getRange("N38");
var QMBSCell = sheet.getRange("O38");
var QCADDCell = sheet.getRange("P38");
var QTRAVDCell = sheet.getRange("Q38");
var QSODCell = sheet.getRange("R38");

//This bit defines the origin cells
var theDate = sheet.getRange("I28").getValue();
var QuoteNo = sheet.getRange("J28").getValue();
var Client = sheet.getRange("K28").getValue();
var Contact = sheet.getRange("L28").getValue();
var Address = sheet.getRange("M28").getValue();
var QTOPD = sheet.getRange("O19").getValue();
var QMBS = sheet.getRange("P19").getValue();
var QCADD = sheet.getRange("S19").getValue();
var QTRAVD = sheet.getRange("R19").getValue();
var QSOD = sheet.getRange("Q19").getValue();

//This bit transfers the data
thedateCell.setValue(theDate);
QuoteNoCell.setValue(QuoteNo);
ClientCell.setValue(Client);  
ContactCell.setValue(Contact);  
AddressCell.setValue(Address);  
QTOPDCell.setValue(QTOPD);  
QMBSCell.setValue(QMBS); 
QCADDCell.setValue(QCADD); 
QTRAVDCell.setValue(QTRAVD); 
QSODCell.setValue(QSOD);
}
function increment() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getRange('J28');
sheet.setValue(Number(sheet.getValue()) + 1)
}

我怀疑这是因为 J28 已经受制于 getRange 和 setValue 命令?增量工作如果单独完成,但是我希望它工作是这个脚本的一部分,这样这一切都可以通过在我的工作表中按下一个按钮来完成,这样一旦我点击了按钮,所有需要被清除的东西,清零,J28 中的数字加 1。

J28 将只包含一个数字。目前类似于“181823”我确实尝试将增量()放在代码的传输部分的末尾,因为我认为这可能是代码在说“一旦完成,然后增量”时的行为方式

一旦脚本中发生其他事件,任何人都可以建议是否有可能让增量工作?我今晚可能会睡一觉是这样的:-)

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


添加这个,然后运行main

function main(){
  ClearRange();
  logData();
  increment();
}

参考调用函数


推荐阅读