从 google 电子表格中获取值
Get values from google spreadsheet
我是 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?
});
}
- 您想从菜单栏手动 运行 脚本。
- 您想从电子表格中检索值。
- 您想创建新文档,其中包含添加了检索值的文本值。
- 脚本中可以使用模板
我明白你想要什么了。当这反映到你的脚本中时,这个修改怎么样?该脚本的流程如下。我认为您的情况有几个答案。所以请将此视为其中之一。
流量:
- 将模板值设置为
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" 列中可能存在相同的值。所以在转换值的时候,我没有作为对象处理。
我是 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?
});
}
- 您想从菜单栏手动 运行 脚本。
- 您想从电子表格中检索值。
- 您想创建新文档,其中包含添加了检索值的文本值。
- 脚本中可以使用模板
我明白你想要什么了。当这反映到你的脚本中时,这个修改怎么样?该脚本的流程如下。我认为您的情况有几个答案。所以请将此视为其中之一。
流量:
- 将模板值设置为
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" 列中可能存在相同的值。所以在转换值的时候,我没有作为对象处理。