Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动将文本转换为行和列(谷歌工作表)_Javascript_Arrays_Google Sheets_Split - Fatal编程技术网

Javascript 自动将文本转换为行和列(谷歌工作表)

Javascript 自动将文本转换为行和列(谷歌工作表),javascript,arrays,google-sheets,split,Javascript,Arrays,Google Sheets,Split,我正在尝试将从Squarespace网站提交的订单数据从以下格式转换为包含4列的表: 存储、项目、数量、详细信息;仓库2,项目2,数量2,细节2;(等等……) 逗号分隔列,分号分隔行。 到目前为止,我尝试过的所有方法都成功地将数据拆分为所需的形式,但问题发生在添加新数据时。提交表单时,它会在下一个可用的空行中创建新行。我似乎找不到一种方法来自动化流程而不接收周期性的依赖性错误,因为每个订单可以有任意数量的条目 电子表格示例: 上面的示例根据需要分割数据。我不知道如何使它与作为新行添加的数据一起

我正在尝试将从Squarespace网站提交的订单数据从以下格式转换为包含4列的表:

存储、项目、数量、详细信息;仓库2,项目2,数量2,细节2;(等等……)

逗号分隔列,分号分隔行。 到目前为止,我尝试过的所有方法都成功地将数据拆分为所需的形式,但问题发生在添加新数据时。提交表单时,它会在下一个可用的空行中创建新行。我似乎找不到一种方法来自动化流程而不接收周期性的依赖性错误,因为每个订单可以有任意数量的条目

电子表格示例:

上面的示例根据需要分割数据。我不知道如何使它与作为新行添加的数据一起工作。我还想继续使用它的云功能表

欢迎提供任何建议,包括处理数据的全新方式,无论是使用脚本、与Squarespace forms兼容的其他远程可访问订单处理应用程序,还是在工作表中本机提供

  • 您希望实现以下转换

样本配方:
  • 在此公式中,单元格“A4”具有输入值
  • 您已经使用了
    =转置(split(A10,;”)
    的公式。在这个回答中,我使用了这个。
    • 对于
      转置(拆分(A10,;”)
      ,使用
      split
      ARRAYFORMULA
      将值拆分为
结果:

示例脚本: 当您想要使用Google Apps脚本时,还可以使用以下脚本

function myFunction(value) {
  const values = value.split(";");
  return values.splice(0, values.length - 1).map(e => e.split(",").map(f => isNaN(f) ? f : Number(f)));
}
  • 在这种情况下,请将脚本复制并粘贴到脚本编辑器中,并将自定义函数
    =myFunction(A4)
    放入单元格中。
    • 可以得到与上述公式相同的结果
参考资料:
      • 您希望实现以下转换

      样本配方:
      • 在此公式中,单元格“A4”具有输入值
      • 您已经使用了
        =转置(split(A10,;”)
        的公式。在这个回答中,我使用了这个。
        • 对于
          转置(拆分(A10,;”)
          ,使用
          split
          ARRAYFORMULA
          将值拆分为
      结果:

      示例脚本: 当您想要使用Google Apps脚本时,还可以使用以下脚本

      function myFunction(value) {
        const values = value.split(";");
        return values.splice(0, values.length - 1).map(e => e.split(",").map(f => isNaN(f) ? f : Number(f)));
      }
      
      • 在这种情况下,请将脚本复制并粘贴到脚本编辑器中,并将自定义函数
        =myFunction(A4)
        放入单元格中。
        • 可以得到与上述公式相同的结果
      参考资料:

      感谢您的反馈。您的解决方案可以工作,但需要向下拖动函数/公式才能工作。这是一个问题,因为数据是作为新行添加的。因此,当添加数据时,它将位于公式所在的最后一行的下方,因此没有公式应用于新数据。有没有一种方法可以运行一个脚本,在每次运行时重新处理整个工作表,或者其他类似的解决方案?@kjoy感谢您的回复。我为我对你目标的不完整回答道歉。这是因为我的技术差。为了正确理解你的目标,我想确认一下。1.关于
      将发生的是,当添加数据时
      ,数据是如何添加的?是剧本吗?2.数据添加到哪里的单元格?3.您希望使用谷歌应用程序脚本实现这一点。我的理解正确吗?不用担心,谢谢你的快速回复。数据来自Squarespace网站上的一个表单。在提交表单时,它被添加为一个全新的行,其中一个单元格包含数据,列用逗号分隔,行用分号分隔。谷歌应用程序脚本似乎是一个可行的解决方案,但我对它的理解非常有限。@kjoy感谢您的回复。关于
      数据来自Squarespace网站上的一个表单。
      ,数据是通过脚本还是谷歌表单输入的?它是一个链接到谷歌表单的Squarespace表单。提交表单时将数据传输到工作表。我想这和谷歌的表单差不多。谢谢你的反馈。您的解决方案可以工作,但需要向下拖动函数/公式才能工作。这是一个问题,因为数据是作为新行添加的。因此,当添加数据时,它将位于公式所在的最后一行的下方,因此没有公式应用于新数据。有没有一种方法可以运行一个脚本,在每次运行时重新处理整个工作表,或者其他类似的解决方案?@kjoy感谢您的回复。我为我对你目标的不完整回答道歉。这是因为我的技术差。为了正确理解你的目标,我想确认一下。1.关于
      将发生的是,当添加数据时
      ,数据是如何添加的?是剧本吗?2.数据添加到哪里的单元格?3.您希望使用谷歌应用程序脚本实现这一点。我的理解正确吗?不用担心,谢谢你的快速回复。数据来自Squarespace网站上的一个表单。在提交表单时,它被添加为一个全新的行,其中一个单元格包含数据,列用逗号分隔,行用分号分隔。谷歌应用程序脚本似乎是一个可行的解决方案,但我对它的理解非常有限。@kjoy感谢您的回复。关于
      数据来自Squarespace网站上的一个表单。
      ,数据是通过脚本还是谷歌表单输入的?它是一个链接到谷歌表单的Squarespace表单。提交表单时将数据传输到工作表。实际上,我想这和谷歌表单是一样的。