我有一个电子表格,提取和积累所有需要的数据从其他6个电子表格使用Vmerge和查询公式,所有合并的数据将转换为pdf和电子邮件到邮件ids使用触发事件。
每次发布的附件邮件包含所有标题和其他格式,但提取的数据不出现时,问题就开始了。它看起来像-打开相同的电子表格,一段时间后,所有的- (连字符)都被数据替换/希望在打开电子表格一段时间后所有数据都更新了。

有谁可以指导我解决这个问题。
对于这个解决方案,应该是->,应该更新所有的数据,然后电子邮件脚本应该工作;或者它应该在电子邮件脚本开始之前更新。
或者任何其他更好的想法都是值得欣赏的。
发布于 2012-05-28 19:41:48
一些电子表格公式,如ImportRange和ImportXml (以及应用程序脚本自定义公式),只有在有人登录到电子表格中时才会计算。就像这些函数需要一个帐户进行评估一样,例如,在importRange中,登录的帐户必须有权访问要导入的范围,如果您与某人共享此电子表格,而不是与importRange源共享此电子表格,当此人查看此电子表格时,importRange函数将不起作用(除非您也在电子表格中并且公式已经被评估)。
底线是,您不能拥有这个公式并使用时间驱动(或其他不需要有人登录的触发器)触发的脚本,并期望脚本能够读取这些数据。
不过,解决方法非常简单。执行importRange函数在脚本中执行的操作!例如:
var source = SpreadsheetApp.openById('source-spreadsheet-key');
var data = source.getSheetByName('List').getRange('I6:AT500').getValues();
//then save it somewhere
var s = Spreadsheet.getActive().getSheetByName('hidden-import');
s.getRange('I6:AT500').setValues(data);
SpreadsheetApp.flush(); //force the data to be written
//so all the other formulas on your spreadsheet get updated with the new data您的所有“逻辑”公式,如query和vmerge,脚本很难模仿,可以留在电子表格中,但引用我刚刚发明的这个“隐藏导入”表,而不是直接嵌套importRange。
编辑
要仅复制非空行,请执行以下操作:
var data = SpreadsheetApp.openById('source-spreadsheet-key').
getSheetByName('List').getDataRange().getValues();
Spreadsheet.getActive().getSheetByName('hidden-import').
getRange(1,1,data.length,data[0].length).setValues(data);https://stackoverflow.com/questions/10749427
复制相似问题