0

好的,我已经厌倦了寻找具体问题来帮助项目、寻找答案、改变我的实现而只是增加了更多问题、意识到有更好的方法来做事等等。所以请允许我寻求一般帮助,我然后将尽我所能研究如何做到这一点,并在需要时提出进一步的问题。

  • 我正在编写一个脚本,用作 Google 网站页面中的小工具(如果有人想看的话,我非常愿意分享这个);现在我只是为我做这个,但我想写这个以方便其他人使用。
  • 这将列出指定文件夹中所有用户的 Google 文档;从列表中选择文档时,内容将显示在另一个字段中进行编辑。
  • 用户将能够定义以句号开头的某些行,以“标记”为可以通过按下按钮自动移调的和弦;也就是说,用户单击一个按钮,所有 A 转到 A#、B 到 C、C 到 C# 等等,但仅限于指定的“Chord”行。
  • 然后,如果需要,用户可以将此文档保存回 Google Docs 以供打印。

我主要有布局。我遇到的一些问题:

  • 执行 a.find显然会找到名称和内容中具有给定字符串的所有文档。解决方法是将文档 ID 放入 Hidden 中,但 List 似乎不会返回您单击的编号项目,那么我怎样才能获得存储在其他地方的 ID?
  • 我希望 TextArea 是用于粗体和其他内容的富文本;Google Apps 是否有文本编辑器(如果我可以将 Google 文档编辑器放在面板中,那就太好了)?RichTextArea 已被弃用,有替代品吗?
  • 为了进行转置,我打算只将文本区域的每个字符放入一个数组中,当它看到一个“\n”后跟一个“。”时,逐步遍历该数组。翻转 var “on”,然后更改任何后续字符,然后如果它看到另一个“\n”,则将 var “off”;有一个更好的方法吗?
  • 或者,有没有办法将脚本添加到可以进行转置的 Google 文档中(我知道您可以为电子表格执行宏,但似乎没有文档的等价物)?这样我就可以发出这个宏并告诉人们在他们现有的文档上使用。
4

1 回答 1

2

既然你问了,是的,单独的问题是合适的,因为问题的组合非常专业,而个别问题可能更普遍,对更多人有用。不过还是让我试一试吧……

[结果find()]...我怎样才能获得存储在其他地方的ID?

DocsList.find()返回文件对象列表。Class File 有一个getId()方法可以返回您在 Google Drive 中看到的文档 ID。要获取所有文件的 ID:

var files = DocsList.getAllFiles();
for (var i in files) {
  Logger.log(files[i].getId());
}

您还应该查看DocsListDialog以创建适用于 Google Drive 的文件选择器。

RichTextArea 已被弃用,有替代品吗?

不,不在应用程序脚本中。你刚刚得到了TextArea。但是,您可以在 UI 中嵌入第三方富文本编辑器。

要进行转置,...有没有更好的方法来做到这一点?

将 TextArea.value 更改为行数组,然后对其进行操作,而无需管理开/关状态。请参阅如何在单击按钮时从 Google App Script 中的 TextArea 获取信息?Javascript:将 textarea 转换为 array

// aTextArea contains user's input. Probably a Johnny Cash song.
var inputText = e.parameter.aTextArea;
var inputLines = inputText.split('\n');
for (var i in inputLines) {
  if (inputLines[i].charAt(0) == '.') {
    // Transpose
  }
}
// Put lines back together, if you wish
var outputText = inputLines.join('\n');

..有没有办法将脚本添加到可以进行转置的 Google 文档中...

是(自最初提出问题以来,此功能已扩展到文档和表单)。不,电子表格是目前唯一可以作为脚本容器的文档类型。

或者,您可以使用独立脚本直接在 Docs 上操作!或许通过将脚本部署为Web 应用程序,让用户从他们的 Google Drive 上的文档中选择要转置的目标音乐,然后编写一个新的文档副本,转置?

于 2013-04-12T02:15:35.047 回答