如何使用Google Apps脚本有效地引入电子表格值

时间:2016-01-23 21:59:56

标签: google-apps-script google-sheets

我目前使用以下代码从电子表格中引入许多值

 myValues["TitleText"] = ss.getRange('B9').getValue();

然后,我使用与

相同的Google Apps脚本在index.html表单中显示值
<div id="title"><?= data.TitleText ?></div>

我想知道我是否应该使用别的东西。也许像ArrayFormula?

我想在我看来,我正在多次回到工作表上,以获得我需要的所有价值。在一次访问中获取所有值会很好,这样可以加快表单的加载和处理速度。

如果可以采用一次旅行方式;它会是什么样子?

1 个答案:

答案 0 :(得分:2)

如果数据在数组中,则没有&#34;内置&#34;将一个值与另一个值相关联的方法。使用对象,您可以关联&#34;键&#34;用&#34;值&#34;。有几种方法可以对数组做同样的事情,但它很多,而且很复杂。#34;。是否应该使用数组或对象,取决于&#34;更大的图片&#34;。如果您想要将标题与值相关联,并且标题和值的位置可能会在电子表格中发生变化,那么 MIGHT 在将对象中的数据发送到您的对象之前进行编译是有意义的HTML。但那时存在性能问题。最好在服务器代码中构造HTML,然后将HTML字符串发送回客户端,而不仅仅是数据。

如果你有很多scriptlet,你可能只想尝试一个打印 scriptlet,在&#34; .gs&#34;中创建HTML字符串。服务器代码,然后发回HTML而不是仅发送数据

如果您以某种特殊格式编译数据,发送数据,那么您需要解密数据并构建HTML,这可能比仅从服务器代码中的开头构建HTML更有效。

getRange()方法有四种不同的参数配置。您正在使用a1Notation变体。我会使用这种变化:

getRange(starting row, starting column, number of Rows, number of Columns)

然后你可以使用这样的代码:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('the sheet name');

var allData = sheet
  .getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
  .getValues();

如果您只想获取B列中的值,从第2行开始,您可以执行以下操作:

var colB_Data = sheet
  .getRange(2, 2, sheet.getLastRow())
  .getValues();

getValues()方法返回二维数组。但是如果你只获得一列数据,那么所有内部数组只有一个元素。如果你需要一维数组,你可以(在这种情况下)将二维数组转换为一维数组:

colB_Data = colB_Data.toString().split(",");