当前位置: 首页 > 知识库问答 >
问题:

谷歌表单分叉(不工作在谷歌表单响应表)

韩英锐
2023-03-14

此函数工作正常。当当前工作表不是Google表单响应工作表时。我正在使用(每分钟)触发器

图像:沙子数据(主数据)表至(共享数据1)表

  • 我正在寻找一个,当用户提交的谷歌表格的状态是(支付),数据应该在第二页,这是(shareData1)

这里的问题是,当我使用谷歌表单响应表时,这个函数将不再工作。它显示了一个错误。错误图像

在降级的错误图像中,我手动运行此函数,相同的错误显示在AppScript面板中。

function doneCopy() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("mainData");
  var values = sheet.getRange(1, 3, sheet.getLastRow(), 1).getValues();

  var moveRows = values.reduce(function(ar, e, i) {
    if (e[0] == "Paid" ) ar.push(i + 1)
    return ar;

  }, []);

  var targetSheet = ss.getSheetByName("shareData1");

  moveRows.forEach(function(e) {
    sheet.getRange(e, 1, 1, sheet.getLastColumn()).moveTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1));
  });
  moveRows.reverse().forEach(function(e) {sheet.deleteRow(e)});
}

共有1个答案

曹奇文
2023-03-14
function doneCopy() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("mainData");
  const tsh = ss.getSheetByName("shareData1");
  const vs = sh.getRange(1, 3, sh.getLastRow(), 1).getValues().flat();
  const n = sh.getLastColumn();
  let d = 0;
  vs.forEach((e, i) => {
    if (e == 'Paid') {
      sh.getRange(i + 1, 1, 1, n).copyTo(tsh.getRange(tsh.getLastRow() + 1, 1));
      sh.deleteRow(i + 1 - d++);
    }
  });
}

我不确定你还有什么额外的需要,但我会尽我所能猜测。

function doneCopy() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("mainData");
  const tsh = ss.getSheetByName("shareData1");
  const vs = sh.getRange(1, 3, sh.getLastRow(), 1).getValues().flat();
  const n = sh.getLastColumn();
  const a = ['Paid','Process'];
  let d = 0;
  vs.forEach((e, i) => {
    if (~a.indexOf(e)) {
      sh.getRange(i + 1, 1, 1, n).copyTo(tsh.getRange(tsh.getLastRow() + 1, 1));
      sh.deleteRow(i + 1 - d++);
    }
  });
}
 类似资料:
  • 我有一个正在写的剧本,需要一些帮助。 首先,我的脚本应该如何工作。 脚本:用户填写谷歌表单并点击提交。提交后,我的脚本运行并从google工作表中读取我在工作表中操作的一系列数据单元。然后将数据单元格格式化为字符串,并在表单的确认消息中提示。 现在问题来了。 问题:当我提交我对表格的回复时,从表格到表格的一切都很好。当我手动运行代码时,代码工作正常。当我提交表单响应时,事件历史记录会显示触发器并说

  • 我想创建一个动态谷歌表单的边栏,理想情况下是从(谷歌)地图中选择要输入表单的坐标。 从文档和试用版中,我可以创建表单编辑器/设计器的侧栏(https://docs.google.com/forms/d/ID/edit),而不是活的形式本身(https://docs.google.com/forms/d/ID/viewform).表单对于文档和工作表应用程序是不同的,存在这两种视图。 例如: 第一个

  • 我尝试使用“读取多个范围”示例: https://sheets.googleapis.com/v4/spreadsheets/{SpreadsheetID}/values:batchGet?范围=表1!B:B 来自:Google Sheets API v4示例我用我的电子表格ID替换了"spreadsheetId"。但当我发送GET请求(通过邮递员)我收到: 比我以前https://develop

  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 我试图使用c#和谷歌表格api在电子表格中追加一行单元格。我拿到密码了 问题是我得到的唯一一个sheetID来自url,是一个String。在哪里可以找到作为整数的工作表ID以及如何执行AppendCellsRequest? 希望你能帮忙。

  • 我正试图让一个Google表单根据1个表单输入的数据,用多行填充电子表格,如下所示: 表单简单,客户信息最少https://docs.google.com/forms/d/1LrKlVuI7kxVU0lxz70Uu-2Obj4x3qIwe6nS-ErzbCAg/ 输入后,我需要表格在表格(或格式化表格)中输入数据,如下所示:-输入的每个部分(1、2或3)应位于单独的行中,具有相同的客户名称 然后,