不能与IMPORTRANGE一起使用getValues()

时间:2019-07-04 03:54:51

标签: google-apps-script google-sheets google-sheets-formula importrange

我有一个电子表格,我曾使用IMPORTRANGE从另一个电子表格中提取数据。我还有一个脚本,该脚本始终获取特定列的最后一行,填写表格,创建链接并将其发送给某人。

我正在尝试使用getValues()来获取已用IMPORTRANGE函数填充数据的特定单元格的值。

function askForPrice() {

var ss = SpreadsheetApp.openById('xXx');
var sheet = ss.getSheetByName('Sheet1');

var range1 = ss.getRange('A1').getDataRegion().getLastRow();
var data = ss.getDataRange().getValues();

var formUrl = ss.getFormUrl();     
var form = FormApp.openByUrl('xXxXx');
var items = form.getItems();

var dateCol = 1
var myID = sheet.getRange(range1, dateCol).getValue();
var dataCol1 = sheet.getRange(range1, dateCol).getValue();

Logger.log(dataCol1)

问题是我运行代码并使用Logger.log()检查getValues()捕获了什么值之后,什么都没出现。 如果将内容直接键入到单元格中,则可以通过Logger.log()返回该内容。但是,如果该单元格包含在IMPORTRANGE范围内,则它不会出现在Logger.log()中。

我应该怎么做才能使其正常工作,以便返回单元格的值?

2 个答案:

答案 0 :(得分:1)

AFAIK公式由Google表格用户界面计算得出。考虑到这一点,我不建议用户未打开电子表格时阅读电子表格公式结果。

一种解决方法是,当用户在工作流中的某个时刻打开电子表格时,将IMPORTRANGE结果保存为值。

另一种,也许更可靠的方法是使用Google Apps脚本来执行导入工作,而不是依靠IMPORTRANGE。

相关

答案 1 :(得分:0)

要求:

使用IMPORTRANGE公式获取单元格的值。


解决方案:

使用getValues(),而不要使用getDisplayValues()。这将返回二维数组中单元格的显示值。

您的代码行将如下所示:

var data = ss.getDataRange().getDisplayValues();

参考: