I’m working on a project where I shall send data from my app to a google spreadsheet in 2 sheets through app script.
I set up a paraphrase to secure the connection. Hkey
I have a lot of data to send like computer1,brand1,cpu1,ram1,computer2,brand2,cpu2,ram2 until 20.
my first version of the code comprise a lot of data like below:
function doGet(e) {
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName("Sheet1");
var Sheet2 = ss.getSheetByName('Sheet2');
var Region = e.parameter.Region ;
var Place = e.parameter.Place ;
var Staff = e.parameter.Staff ;
var computer1 = e.parameter.computer1;
var brand1 = e.parameter.brand1;
var cpu1 = e.parameter.cpu1;
var ram1 = e.parameter.ram1;
var computer2 = e.parameter.computer2;
var brand2 = e.parameter.brand2;
var cpu2 = e.parameter.cpu2;
var ram2 = e.parameter.ram2;
var Hkey = e.parameter.Hkey;
if (Hkey == 'AB12xyz') {
sheet1.appendRow(Region, Place, Staff, computer, brand, cpu, ram);
Sheet2.appendRow(Region, Place, Staff, computer, brand, cpu, ram);
}
}
Then I optimised the code to avoid repeated tasks.
where if the computer
is true, then append computer1,brand1,cpu1,ram1
and so on…until computer20,brand20,cpu20,ram20
Optimised code :
function doGet(e) {
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName("Sheet1");
var Sheet2 = ss.getSheetByName('Sheet2');
var ID = "FS" + new Date("GMT+4", "ddMM");
var Region = e.parameter.Region ;
var Place = e.parameter.Place ;
var Staff = e.parameter.Staff ;
var Shop = e.parameter.Shop;
var Location = e.parameter.Location ;
var Date_Checked = e.parameter.Date_Checked ;
var Time_Checked = e.parameter.Time_Checked ;
var Link = "check your inbox" ;
var Remarks = e.parameter.Remarks ;
var Hkey = e.parameter.Hkey;
if (Hkey == 'AB12xyz') {
for (var i = 1; i <= 20; i++) {
var computer = e.parameter['computer' + i];
var brand = e.parameter['brand' + i];
var cpu = e.parameter['cpu' + i];
var ram = e.parameter['ram' + i];
if (computer) {
var row = [ID,Region,Place,Staff,Shop,Location, Date_Checked,Time_Checked,Link,Remarks];
sheet1.appendRow(row, computer, brand, cpu, ram);
Sheet2.appendRow(row, computer, brand, cpu, ram);
}
}
The issue is that nothing is appended on the 2 sheets of the spreadsheet.
When checking the script deployment overview, I got only failures.
2
Answers
Try something like this:
I believe your goal is as follows.
The issue is that nothing is appended on the 2 sheets of the spreadsheet. When checking the script deployment overview, I got only failures.
.Modification points:
In your showing script, at
appendRow(row, computer, brand, cpu, ram)
,row
is 1 dimensional array and the values ofcomputer, brand, cpu, ram
are string.I think that
new Date("GMT+4", "ddMM")
ofvar ID = "FS" + new Date("GMT+4", "ddMM");
returns "Invalid Date".When these points are reflected in your bottom script, it becomes as follows.
From:
To:
and
From:
To:
This is the answer to your 2nd question. About your 1st question, in this case, how about the following modification?
When
appendRow
is used in a loop, the process cost becomes high. Ref (Author: me)