javascript - 根据谷歌表格中的 URL 查找并选择一个单元格

标签 javascript html url google-apps-script google-sheets

我使用谷歌表格制作了一个简单的基于表格的化学品数据库。 工作表看起来像这样: https://docs.google.com/spreadsheets/d/e/2PACX-1vR0-AMEKNM3ZbDq67OIKWnc7E3KP8kfOsnr0Bjg2OSjpevLLjniknGXfIiiyZvbwE9bz3EfbOpO46ef/pubhtml?gid=292509613&single=true

有很多行和列。 用户可以使用 url 链接更改单元格的值 像这样的 https://docs.google.com/spreadsheets/d/13sLioJr_T6lqQ7y_pStBR8CKxReYwLUn4hao/edit#gid=292509613&range=B2

链接被转换为二维码,供需要通过手机远程更改电池值的人使用,无需手动搜索特定化学物质

当有人引入新行时,问题就开始了,然后每个单元格的位置都发生了变化,现在所有的 url(即打印的 QR 码)都选择了错误的化学品。现在所有的 url 都是错误的,我必须手动修复这个问题并将新行移动到表格的底部

理想情况下,我希望根据化学品 ID(在本例中为 cp1000)选择带有查询的单元格 像(伪代码) docs.google.com/spreadsheets/d/13sLioJr..../edit#gid=292509613&range=(选择单元格B(row_number),其中单元格A包含(cp1000))

成功结果的一个例子是根据 A 列选择 B 列中的单元格

在伪代码中:

 cell = Cell()
 id = query.exctract_id()
 for n in range(1,max_row):
    if cell(column_number = 'A', row_number = n).value == id:
        select cell(column_number ='B', row_number = n)
        break

有没有办法把它写在一个 URL 中?

最佳答案

感谢您的建议。 我确实最终制作了一个简单的 1 页 web 应用程序。 JS实际上非常容易学习。 我使用一种有点奇怪的方式从 doGet() 函数传递变量,将它们存储在电子表格中,因为该函数只能返回 html 输出。

function doGet(e){
  var url = "https://docs.google.com/spreadsheets/d/13sLioJr_T6lRODrvGSqQ7y_pStBR8CKxReYwLUn4hao/edit#gid=0";
  var [ID, chemical, totalAmount, name, targetRow, unit] = fill(e);
  var ss = SpreadsheetApp.openByUrl(url).getSheetByName("Supplementary");
  ss.getRange("B5").setValue(ID);
  ss.getRange("B6").setValue(name);
  ss.getRange("B7").setValue(targetRow);
  ss.getRange("B8").setValue(Session.getActiveUser().getEmail());
  Logger.log(ID);
  var data = {ID:ID, chemical :chemical, totalAmount :totalAmount, unit :unit};
   var html = HtmlService
      .createTemplateFromFile('FrontEnd.html')
      .evaluate()
      .getContent();
   return HtmlService
     .createTemplate(html +    
       "<script>\n" + 
        "postChemicals( " +
        JSON.stringify(data) +
        ");\n</script>")
        .evaluate();
}
//  


function fill(e){
  // this function extracts event parameters and gets a cell from spreadsheet with query from URL
  // where name equals to spreadsheet name and ID to the chemical ID generated by "Code.gs"
  var url = "<post your url>";
    var ID = e.parameter.ID;
    var name = e.parameter.name;
  var targetRow =getCell(ID,name);
  var sheet = SpreadsheetApp.openByUrl(url).getSheetByName(name);
  var chemical = sheet.getRange("B"+targetRow).getValue()
  var totalAmount = sheet.getRange("D"+targetRow).getValue()- 
  sheet.getRange("C"+targetRow).getValue();
  var takenCell = sheet.getRange("C"+targetRow);
  var unit = sheet.getRange("E"+targetRow).getValue();
  Logger.log("fill(e) called");
  return [ID, chemical, totalAmount,name, targetRow, unit ]
}

function getCell(chemNo, name){
  var url = "https://docs.google.com/spreadsheets/d/13sLioJr_T6lRODrvGSqQ7y_pStBR8CKxReYwLUn4hao/edit#gid=0";
 // this is a function that searches for a cell
  //get the first sheet of your 
  var sheet = SpreadsheetApp.openByUrl(url).getSheetByName(name);
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange('A1:A' + lastRow).getValues();

  for(var i = 0; i < lastRow; i++){
    if(range[i] == chemNo){
      return  (i + 1);
    }
  }

关于javascript - 根据谷歌表格中的 URL 查找并选择一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208748/

相关文章:

javascript - ThreeJS 将体素放置在选定尺寸的网格上

javascript - HTML 表单验证标签放置

html - 推特 Bootstrap : Why the z-index: 2 for some states?

html - Flexbox 响应式行列布局

php - PHP 中的 REST URL 映射和物理实现

javascript - 如何将 data.key --> element.id 绑定(bind)到 d3js 中的现有标记上?

javascript - jQuery Ajax 在第二次提交时发送两次,在第三次提交时发送三次

url - 如何自动将事件跟踪数据添加到任何网址?

php - 即使没有协议(protocol),也将 url 从文本转换为链接

javascript - 如何将erb页面元素传递给rails中的javascript