[英]GAS Function not setting value as intended in sheet
This is the Google Sheet, it can be copied: https://docs.google.com/spreadsheets/d/1ffIRGiGkiy5WFzSAvWNOY_3cqNXgTAOtO6o8vxS-BFU/edit?usp=sharing这是Google Sheet,可以复制: https://docs.google.com/spreadsheets/d/1ffIRGiGkiy5WFzSAvWNOY_3cqNXgTAOtO6o8vxS-BFU/edit?usp=sharing
The Function 'AddNewMembers' does not function, even if "isAdded == "No" it will not setValue(recruit_id) Function 'AddNewMembers' 没有 function,即使 "isAdded == "No" 也不会 setValue(recruit_id)
function AddNewMembers(event){ event = {range: SpreadsheetApp.getActiveRange()} CheckHandleSteamIDNotation(event) SpreadsheetApp.flush(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var recruitment_log = ss.getSheetByName('RL1'); var main_roster = ss.getSheetByName('Main Roster'); var isAdded = recruitment_log.getRange('R3').getValue(); if(isAdded == "No") { var recruit_id = "'" + recruitment_log.getRange('J3').getValue(); main_roster.getRange('I100').setValue(recruit_id); } } function CheckHandleSteamIDNotation(event) { let formSheet = SpreadsheetApp.getActiveSheet(); let header = formSheet.getRange(1,1,1,formSheet.getMaxColumns()).getValues(); let formRange = formSheet.getRange(formSheet.getLastRow(), 1, 1, formSheet.getMaxColumns()); let formValues = formRange.getValues(); for(let i = 0; i < header[0].length; i++) { if(header[0][i].includes("SteamID")) { formValues[0][i] = "'" + formValues[0][i]; } } formRange.setValues(formValues); }
Since the provided script above contains var isAdded = recruitment_log.getRange('R3').getValue();
由于上面提供的脚本包含var isAdded = recruitment_log.getRange('R3').getValue();
the value of R3
is currently set to "Yes" that is why the condition for the script below is not running. R3
的值当前设置为“是”,这就是下面脚本的条件未运行的原因。
if(isAdded == "No") {
var recruit_id = "'" + recruitment_log.getRange('J3').getValue();
main_roster.getRange('I100').setValue(recruit_id);
}
Try this modification:试试这个修改:
function AddNewMembers(event) {
event = { range: SpreadsheetApp.getActiveRange() }
CheckHandleSteamIDNotation(event)
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var recruitment_log = ss.getSheetByName('RL1');
var main_roster = ss.getSheetByName('Main Roster');
//Gets all the data values on recruitment_log
var isAdded = recruitment_log.getRange(3, 1, recruitment_log.getLastRow(), recruitment_log.getLastColumn()).getValues();
//Gets the last row starting I17
var lastrow = main_roster.getRange(17, 9, main_roster.getLastRow() , 1).getValues().filter((x => x > 1)).length
//Sets the value on the last blank row
isAdded.map(x => x[17].toString().toLocaleLowerCase() == "no" ? "'" + main_roster.getRange(17 + lastrow,9).setValue(x[9]) : x)
}
I made modifications on your isAdded
variable to the following to get the entire range of data on RL1 sheet.我对您的isAdded
变量进行了以下修改,以获取 RL1 工作表上的整个数据范围。
var isAdded = recruitment_log.getRange(3, 1, recruitment_log.getLastRow(), recruitment_log.getLastColumn()).getValues();
This part of script was only used to get the current length of data for the New Operatives.这部分脚本仅用于获取 New Operatives 的当前数据长度。 Using .filter()
method to filter out empty array elements, since getValues()
gets blank cells if there is formatting applied on the spreadsheet.使用.filter()
方法过滤掉空数组元素,因为如果在电子表格上应用了格式, getValues()
会得到空白单元格。
var lastrow = main_roster.getRange(17, 9, main_roster.getLastRow() , 1).getValues().filter((x => x > 1)).length
Using ES6 .map()
method to create a new array for the data that hasn't been added to the main roster sheet file.使用 ES6 .map()
方法为尚未添加到主名册表文件的数据创建一个新数组。
isAdded.map(x => x[17].toString().toLocaleLowerCase() == "no" ? "'" + main_roster.getRange(17 + lastrow,9).setValue(x[9]) : x)
Screenshot:截屏:
Reference:参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#description https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /数组/过滤器#description
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.