我正试图保存我从网站上获得的每日反馈;"反馈";表单转换为另一个谷歌表单,我称之为";"反馈数据库";
A列:日期B列:时间C列:电子邮件地址D列:反馈
数据行从第3行开始。
我目前正在做的是基于我所掌握的基本知识来保存数据:
- 复制";"反馈";薄板
- 将其保存到";数据库";薄板
- 回到";"反馈";并删除行3,使得行4中的数据变为行3中的数据
我有另一个函数,它计算行数,并根据行数运行saveFeedback_Data((函数。
我知道我在第3步中所做的不是一种正确的方式,如果你们能推荐一种更好的方式来执行这一功能,并通过评论来理解,我将不胜感激。
感谢你的帮助,
function saveFeedback_Data() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feedback'), true);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var Date= sheet.getRange('feedback !A3').getValue();
var Time = sheet.getRange('feedback !B3').getValue();
var Email = sheet.getRange('feedback !C3').getValue();
var Feedback = sheet.getRange('feedback !D3').getValue();
var sheet_dest = ss.getSheetByName("Database");
sheet_dest.appendRow([Date,Time, Email,Feedback]);
Logger.log('Issue Date : ' + Date + ' Issue time : ' + Time + ' Email Address : ' + Email + ' Feedback : ' + Feedback + 'n');
//now deleting the row
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feedback'), true);
spreadsheet.getRange('3:3').activate();
spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
spreadsheet.getRange('A10').activate();
}
保存反馈数据
这将比快十倍
function saveFeedback_Data() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Feedback');
const shsr = 3;
const dbsh = ss.getSheetByName('Database');
const rg = sh.getRange(shsr, 1, sh.getLastRow() - shsr + 1, 4);
const vs = rg.getValues().filter(r => !r.every(e => !e));//gets all non blank rows at one time
dbsh.getRange(dbsh.getLastRow() + 1, 1, vs.length, vs[0].length).setValues(vs);//moves all data at one time
rg.clearContent();//clears all data at one time
}
你可以转到谷歌应用程序脚本参考,使用搜索框找到任何你不理解的功能。如果它是一个纯JavaScript函数,请点击此处