我是App Script的新手,但我通常想知道我想做的事是否可能……对您的任何帮助将不胜感激。

因此,我有一个Google电子表格,其中有些列设置如下:

Column A   Column B

name       name.com
name2      name2.com
name3      name3.com


我希望能够获得每一列中的所有值,并将它们解析为类似于最终文件的格式,可以将其复制并粘贴到其他位置:

<#function linker trackerName>
<#local link = {
"name" : "name.com",
"name2" : "name2.com",
"name" : "name2.com"

}>
</#function>


我猜测使用应用程序脚本很有可能,但是我不确定格式或如何将其解析为文本文件?

同样,任何有关启动点的帮助或指导都将非常棒!

这是我要修改的脚本。.我做了一个菜单,但是当我运行函数时,什么也没发生:

 function onOpen() {
   var ui = SpreadsheetApp.getUi();
   ui.createMenu('Get Values')
       .addItem('Go!', 'getValues')
       .addToUi();
    }


   function getValues() {

   var values =
   SpreadsheetApp.getActiveSheet().getDataRange().getValues();

    values.forEach( function(row) {
    row[0] // column index as 4 ... I beleive this should get all values
    in each row / column?
    });
    }

最佳答案

您要从菜单栏中手动运行脚本。
您要从电子表格中检索值。
您要创建新的Document,包括添加了检索值的文本值。
可以在脚本中使用模板。


我了解以上您想要的内容。当这反映到您的脚本时,该修改如何?该脚本的流程如下。我认为您的情况有几个答案。因此,请将此视为其中之一。

流:


将模板值设置为tempHeadertempFooter
从电子表格中检索值。
转换检索到的值以在模板上使用。
合并转换后的值和模板值。
创建新的文档并设置值。


修改后的脚本:

function getValues() {
  var fileName = "sampleName"; // This is a filename of new Document.

  var tempHeader = "<#function linker trackerName>\n<#local link = {\n";
  var tempFooter = "\n}>\n</#function>\n";
  var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  var v = values.slice(1, values.length);
  var res = v.map(function(e, i){return '"' + e[0] + '" : "' + e[1] + '"' + (i < v.length - 1 ? "," : "")}).join("\n");
  DocumentApp.create(fileName).getBody().setText(tempHeader + res + tempFooter);
}


注意:


可以使用脚本中的onOpen()。打开电子表格后,您可以在菜单栏中运行脚本。
在此修改的脚本中,新文档的文件名是fileName。因此,请根据您的情况进行修改。
我担心“ A”列中可能有相同的值。因此,在转换值时,我没有将其作为对象进行处理。

关于javascript - 从Google电子表格获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52488196/

10-12 17:37