我正在尝试在google sheets中的一个工作表上输入一些数据,创建一个将数据提交到另一个工作表的按钮。另一个工作表将类似于我的数据库。
我几乎没有JS经验。我可以创建按钮并将其链接到我的脚本中,但在那之后,我就迷路了。这段代码很好地将数据放到了我的数据库工作表中。问题是数据保留在同一行上,当我运行脚本时,旧数据会被擦除。
function transfer() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheets()[0];
var destination = ss.getSheets()[1];
var range1 = source.getRange("B2");
range2.copyValuesToRange(destination,3,3,2,2);
range2.clearContent();
var range2 = source.getRange("C2");
range2.copyValuesToRange(destination,4,4,2,2);
range2.clearContent();
var range3 = source.getRange("D2");
range3.copyValuesToRange(destination,5,5,2,2);
range3.clearContent();
var range4 = source.getRange("C2");
range4.copyValuesToRange(destination,4,4,2,2);
range4.clearContent();
}
另一个问题是,我不希望单元格为空,因此我尝试设置警报。
var range1 = source.getRange("A2");
range1.copyValuesToRange(destination,2,2,2,2);
if (range1 ==!"");
Browser.msgBox("Please Enter A Date");
它会提示消息框,但仍会复制数据。
最后,我希望range1像一个唯一的ID,所以如果我在源工作表上的A2中放置一个值,那么它将自动填充其他单元格。
如果有帮助,这里有链接。
https://docs.google.com/spreadsheets/d/1Zi7Oc0f5AlxcRRoFMM1Q1VkkM1Co6Yo8yYBY1TvkQMc/edit?usp=sharing
发布于 2018-12-07 07:51:53
我建议您花更多的时间阅读文档。就我个人而言,我从来没有考虑过把按钮直接放在电子表格上。我更喜欢使用菜单、对话框或侧边栏。而且,在适当的情况下,用getValues()替换getValue()通常会提高性能。
但是,这里有另一种方法来处理您正在处理的问题。也许这会给我们一些思考的东西。玩得开心。不过你的纽扣看起来确实很漂亮。做得很好。
function onOpen(){//This will put a post button on a menu
SpreadsheetApp.getUi().createMenu('My Menu')
.addItem('Post Data', 'postData')
.addToUi();
}
function postData() {//this will append data fromm 'DataEntry' to 'DB' with a timestamp spliced into it.
var ss=SpreadsheetApp.getActive();
var sh1=ss.getSheetByName('DataEntry');
var sh2=ss.getSheetByName('DB');
var rg1=sh1.getRange(sh1.getLastRow(),1,1,sh1.getLastColumn());
var vA=rg1.getValues();
vA[0].splice(0,0,Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"E MMM dd, yyyy HH:mm:ss"));
sh2.appendRow(vA[0]);
}
这是我的DateEntry选项卡的样子:
下面是我的DB选项卡的样子:
post只是将DataEntry中的最后一行添加到DB中最后一行之后的行。
https://stackoverflow.com/questions/53660194
复制相似问题