我有一个电子表格,我曾使用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()
中。
我应该怎么做才能使其正常工作,以便返回单元格的值?
答案 0 :(得分:1)
AFAIK公式由Google表格用户界面计算得出。考虑到这一点,我不建议用户未打开电子表格时阅读电子表格公式结果。
一种解决方法是,当用户在工作流中的某个时刻打开电子表格时,将IMPORTRANGE结果保存为值。
另一种,也许更可靠的方法是使用Google Apps脚本来执行导入工作,而不是依靠IMPORTRANGE。
相关
答案 1 :(得分:0)
使用IMPORTRANGE
公式获取单元格的值。
使用getValues()
,而不要使用getDisplayValues()
。这将返回二维数组中单元格的显示值。
您的代码行将如下所示:
var data = ss.getDataRange().getDisplayValues();