【问题标题】:Custom HTML Form posting to different sheets in google sheets自定义 HTML 表单发布到谷歌表格中的不同表格
【发布时间】:2018-10-23 21:23:06
【问题描述】:

我有 4 个表格需要张贴到不同的工作表。我有以下代码,让表单发布但仅发布到当前(活动)工作表,但我无法将其发布到不同的工作表。

另一种选择是,如果我可以有一个表格,并且取决于您选择的部门(表格名称),它将发布到该表格。

function openDialog1() {
  var html = HtmlService.createHtmlOutputFromFile('form1.html');
    SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
    .showModalDialog(html, 'Pop up Form');
}
function openDialog2() {
  var html = HtmlService.createHtmlOutputFromFile('form2.html');
    SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
    .showModalDialog(html, 'Pop up Form');
}
function openDialog3() {
  var html = HtmlService.createHtmlOutputFromFile('form3.html');
    SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
    .showModalDialog(html, 'Pop up Form');
}
function openDialog4() {
  var html = HtmlService.createHtmlOutputFromFile('form4.html');
    SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
    .showModalDialog(html, 'Pop up Form');
}

function doGet(e){
    return HtmlService.createHtmlOutputFromFile('index').setTitle('Adding Rows');
}

function doPost(e) {
    Logger.log(e);
}

function sendText(data){
      var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow([data.item_number, data.shop_number, data.escalation, data.Hide1, data.notes, data.problem, data.added_by, data.incoive_date, data.location_order, data.user_working, data.CS_rep, data.shipping, data.department]);

    return 'success!';
}

这是我的测试电子表格的链接,您可以查看 HTML 并进行测试。

https://docs.google.com/spreadsheets/d/1iWQ40boplJcJmdFg9HNIyOAOrHOjlCRu362LWRdV5y0/edit?usp=sharing

【问题讨论】:

  • 刚刚要求您访问。最好的。
  • 抱歉,我以为我有它,所以任何人都可以编辑。我现在已经修好了。现在每个人都应该可以访问
  • 我尝试更改 sendText 函数以调用某个工作表,但我认为我的 js 代码有误,我还设置了它,如果我编辑列 (M),它将将该行移动到相应的床单。但是当它通过表单提交时,onEdit 功能不适用于它。我试图找到一种方法让他们每 30 分钟通过一次,但无法弄清楚。
  • @JoshuaDoan 刚刚在您的工作表中给您留言
  • @JoshuaDoan 很高兴它对您有所帮助。

标签: html google-apps-script google-sheets google-sheets-api


【解决方案1】:

从您的电子表格中可以看出,您在每个表单上都使用了google.script.run.sendText(data)。 一种解决方案是像这样重建您的功能。

html

<script>
  google.script.run.withSuccessHandler(function(response) {
    console.log(response);
    google.script.host.close()
    }).sendText("Your Sheet",data);
</script>

气体

function sendText(sheetName, data){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  sheet.appendRow([data.item_number, data.shop_number, data.escalation, data.Hide1,       data.notes, data.problem, data.added_by, data.incoive_date, data.location_order, data.user_working, data.CS_rep, data.shipping, data.department]);
  return 'success!';
}

您只需将工作表名称作为参数传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多