我是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,包括添加了检索值的文本值。
可以在脚本中使用模板。
我了解以上您想要的内容。当这反映到您的脚本时,该修改如何?该脚本的流程如下。我认为您的情况有几个答案。因此,请将此视为其中之一。
流:
将模板值设置为tempHeader
和tempFooter
。
从电子表格中检索值。
转换检索到的值以在模板上使用。
合并转换后的值和模板值。
创建新的文档并设置值。
修改后的脚本:
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/