首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Google Sheets作为数据库

Google Sheets作为数据库
EN

Stack Overflow用户
提问于 2018-12-07 05:49:50
回答 1查看 221关注 0票数 0

我正在尝试在google sheets中的一个工作表上输入一些数据,创建一个将数据提交到另一个工作表的按钮。另一个工作表将类似于我的数据库。

我几乎没有JS经验。我可以创建按钮并将其链接到我的脚本中,但在那之后,我就迷路了。这段代码很好地将数据放到了我的数据库工作表中。问题是数据保留在同一行上,当我运行脚本时,旧数据会被擦除。

代码语言:javascript
复制
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();


  }

另一个问题是,我不希望单元格为空,因此我尝试设置警报。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2018-12-07 07:51:53

我建议您花更多的时间阅读文档。就我个人而言,我从来没有考虑过把按钮直接放在电子表格上。我更喜欢使用菜单、对话框或侧边栏。而且,在适当的情况下,用getValues()替换getValue()通常会提高性能。

但是,这里有另一种方法来处理您正在处理的问题。也许这会给我们一些思考的东西。玩得开心。不过你的纽扣看起来确实很漂亮。做得很好。

代码语言:javascript
复制
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中最后一行之后的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53660194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档