Я должен пользоваться мобильным телефоном во время путешествия для управления листами Google. У меня есть две функции, которые я назначил кнопкам это работает. однако, это не работает в мобильной версии. для этого я нашел причину, заполнив флажок в ячейке функцией onEdit
. но одна функция работает, в то время как другая не работает даже в настольной версии, когда я нажимаю флажок
function onEdit(e){
const rg = e.range;
if(rg.getA1Notation() === "C30" && rg.isChecked() && rg.getSheet().getName() === "pad no 1"){
loopThroughQuantity(); //loopThroughQuantity is a function name
rg.uncheck();
}
}
, теперь у меня есть две функции, одна работает правильно как в мобильной, так и в настольной версии листов Google, но другая функция не работает как в настольной, так и в мобильной версии через флажок, ниже находится первая функция, которая работает
function loopThroughQuantity(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var bill = ss.getSheetByName("pad no 1");
var billdata=bill.getRange(8, 1, 27, 6).getValues();
var sheet = ss.getSheetByName("stock");
var range = sheet.getDataRange();
var stock = range.getValues();
for (var i=0; i<billdata.length;i++){
var q = billdata[i][5];
var desc = billdata[i][1];
for( var j=0; j<stock.length; j++ ) {
if( stock[j][0] === desc ) {
range.offset(j,2,1,1).setValue(q);
}
}
}
}
, в то время как другой код ниже, который не работает при нажатии флажка
function runBothfunctions(){
//function 1
var ss = SpreadsheetApp.getActiveSpreadsheet()
var ss1 = ss.getSheetByName('pad no 1')
var ss1Id = ss1.getSheetId()
var ss2 = ss.getSheetByName('bill list')
var ssId = ss.getId()
var clientName = ss1.getRange(3,3).getValue()
var invoiceNumber = ss1.getRange(4,3).getValue()
var totalBill = ss1.getRange(29,9).getValue()
var d = new Date();
var fullDate = ('0' + d.getDate()).slice(-2) +"/"+ ('0' + (d.getMonth() +1)).slice(-2) +"/"+
(d.getYear().toString()).slice(-2)
var invoiceFileName = invoiceNumber + '_' + fullDate + '_' + clientName +'_'+ totalBill
var url = ss.getUrl()
url = url.replace(/edit$/,'')
var url_ext = 'export?exportFormat=pdf&format=pdf'
+ '&size=A4' // paper size: "legal" / "letter" / "A4"
+ '&fitw=true' // fit to width, false for actual size
+ '&sheetnames=false&printtitle=false' // hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&gid=' + ss1Id // the sheet's Id
var token = ScriptApp.getOAuthToken()
// Convert sheet1 to PDF
var response = UrlFetchApp.fetch(url + url_ext, { headers: { 'Authorization': 'Bearer ' + token }})
var blob = response.getBlob().setName(invoiceFileName + '.pdf')
// Add the folder ID of the Drive folder where the PDF should be saved. Create a folder and copy this
ID: www.goo.gl/TfgqrN
var invoiceURL =
DriveApp.getFolderById('1I8NvoAERa_NxgS3z5jmYCC8TOlejDHNT').createFile(blob).getUrl()
ss2.getRange(ss2.getLastRow() +1, 1).setFormula('=HYPERLINK("' + invoiceURL + '";"' + invoiceFileName
+ '")')
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
//create an array of the invoice numbers already created
var colArray = sheet.getRange(4, 3).getValues();
//sort the array values to find max
var maxInColumn = colArray.sort(function(a,b){return b-a})[0][0];
var nextCell = sheet.getRange(4, 3);
//assign the max+1 to the next entry
nextCell.setValue(maxInColumn+1);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Unwanted Sheet');
DriveApp.createFile(ss.getBlob());
//function 2
var sheet = SpreadsheetApp.getActive().getSheetByName('pad no 1');
sheet.getRange('B8:F28').clearContent();
sheet.getRange('h8:h28').clearContent();
sheet.getRange('C3').clearContent();
//function 3
//below code is for subtracting sold quantity from old quantity
var sheet = SpreadsheetApp.getActive().getSheetByName('stock');
var maxRows = sheet.getMaxRows();
var soldRange = sheet.getRange(2, 3, maxRows); // row, column, number of rows
var totalRange = sheet.getRange(2, 2, maxRows);
var soldValues = soldRange.getValues();
var totalValues = totalRange.getValues();
for (var row in soldValues) {
var soldCellData = soldValues[row][0];
var totalCellData = totalValues[row][0];
if (soldCellData !== "" && totalCellData !== "") {
totalValues[row][0] = totalCellData - soldCellData;
soldValues[row][0] = "";
}
}
soldRange.setValues(soldValues);
totalRange.setValues(totalValues);
var sheet = SpreadsheetApp.getActive().getSheetByName('pad no 1');
sheet.getRange('c3').setValue('Make Your Next Bill');
//sheet.getRange('c3').activate();
//function 4
//var ui = SpreadsheetApp.getUi()
//var response = ui.alert('bill saved and cleared ?');
}
этот код работает правильно, если щелкнуть изображение отдельно, но не работает с onEdit. может быть, код слишком длинный. Одна вещь, я добавлю это больше здесь. если он начинает работать, установив флажок, как запустить обе функции на одной из мобильных устройств, нужно ли мне объединить эти две функции и запустить его, установив один флажок. Было бы здорово, если бы эти две функции начали работать одним щелчком мыши. заранее спасибо, что уделили мне больше времени.