如何获取脚本将2个变量的总和添加到表格中的第3列

问题描述 投票:0回答:1

我有两个单独的脚本,询问用户他们的起步里程(输入第3列)和结束里程(输入第4列)。在输入结束里程后,如何获得输入第10栏的总里程?我已经尝试在工作表上输入一个函数但是被下一个数据输入覆盖了。

我的2脚本看起来像这样:

var StartMileage =  SpreadsheetApp.getUi().prompt("Please enter Start Mileage.").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 3).setValue( StartMileage );

和,

var Home =  SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home );

我想要的基本总和是'Home'的值减去放入第10列的'StartMileage'的值。

脚本设置为在点击按钮时运行,他们将在其中提交响应,第一个按钮将询问他们的姓名并开始里程,最后一个按钮会询问他们的结束里程,按钮将按顺序点击并按两份提交内容都将提交到同一行。我希望脚本在提交结束里程的同时进行计算,该函数如下所示:

function promptHome()
{
  var Home =  SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home );

  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X")

  var NewLog = ss.getRange(ss.getLastRow(), 9).setValue( new Date() );
}
google-apps-script google-sheets
1个回答
1
投票

添加代码以计算并将计算值插入promptHome()函数。并且没有必要像现在在代码中那样获取表格两次。这是函数的外观:

function promptHome() {
  var Home = SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X");
  var startMileage = parseInt(ss.getRange(ss.getLastRow(), 3).getValue(), 10);
  var diffMileage = parseInt(Home, 10)-startMileage;
  ss.getRange(ss.getLastRow(), 4).setValue(parseInt(Home, 10));
  ss.getRange(ss.getLastRow(), 9, 1, 2).setValues([[new Date(), diffMileage]]); // insert values into cols 9 and 10 at the same time, so save time
  SpreadsheetApp.flush(); // commit the changes
}

当然,只有当您的用户仅在提示中输入数字时,它才能正常工作。但是如果你允许他们输入任何他们想要的东西(即“15mi”或“shamalamamumu”)并且不验证数据,那么你的问题比函数不起作用更大:)你还应该在你的代码中使用Lock Service来防止并发数据写道。

© www.soinside.com 2019 - 2024. All rights reserved.