不能将 getValues() 与 IMPORTRANGE 一起使用

Can't use getValues() with IMPORTRANGE

我有一个电子表格,我在其中使用 IMPORTRANGE 从另一个电子表格中提取数据。我还有一个脚本,它总是获取特定列的最后一行,填写表格,创建 link 并将其发送给某人。

我正在尝试使用 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() 捕获的值之后,什么也没有出现。 如果内容直接输入到单元格中,我可以 return 通过 Logger.log()。但是如果单元格包含在 IMPORTRANGE 范围内,它不会出现在 Logger.log().

我应该怎么做才能让它发挥作用,这样单元格的值就会被 returned?

要求:

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


解决方案:

不使用 getValues(),而是使用 getDisplayValues()。 returns 二维数组中单元格的显示值。

你的代码行看起来像这样:

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

参考:

A​​FAIK 公式由 Google 张 UI 计算得出。考虑到这一点,我不建议在用户未打开电子表格时阅读电子表格公式结果。

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

另一个可能更可靠的方法是使用 Google Apps 脚本来完成导入工作,而不是依赖于 IMPORTRANGE。

相关

  • Spreadsheet function (=importrange()) not updating
  • Is it possible to do ImportRange in Google Apps Script?