我今天已玩弄与谷歌Apps脚本,我试图编写一些自定义的电子表格功能。 我已经做了一些搜索,但无法找到一个答案,我的查询。
我知道,在谷歌电子表格,你可以在这样一个电子表格单元格使用IMPORTRANGE:
=ImportRange(spreadsheet_key;sheet!range_of_cells)
我的问题是是否有可能做一个谷歌Apps脚本类似的东西,如果是这样,如何?
我想从另一个电子表格(而不是电子表格中的脚本将驻留在片材)的纸张进口的单元格区域。
我今天已玩弄与谷歌Apps脚本,我试图编写一些自定义的电子表格功能。 我已经做了一些搜索,但无法找到一个答案,我的查询。
我知道,在谷歌电子表格,你可以在这样一个电子表格单元格使用IMPORTRANGE:
=ImportRange(spreadsheet_key;sheet!range_of_cells)
我的问题是是否有可能做一个谷歌Apps脚本类似的东西,如果是这样,如何?
我想从另一个电子表格(而不是电子表格中的脚本将驻留在片材)的纸张进口的单元格区域。
是的,这是完全可能的。 你只需要调用SpreadsheetApp.openById
,然后获得所需的表和正常范围。
请看看在文档 : range.getValues()
和range.setValues()
是非常基本的GAS方法,并很好描述。
阅读教程以及。
看来谷歌在其无穷的智慧,改变了openById和类似功能的行为。 他们是在自定义功能的情况下,不再允许。
见https://code.google.com/p/google-apps-script-issues/issues/detail?id=5174了解更多详情。
他们建议使用IMPORTRANGE作为一种解决办法,但正如前面提到的,这需要在细胞内调用。
我们的解决方案是使用IMPORTRANGE在纸张,并将所获取的数据传递到我们的自定义功能,为数据集显小。 我希望这个信息帮助!
我需要最近做到这一点。 这是我想出了,只是硬编码的电子表格键和范围为亚哈的myImportRange
功能
// to be used in the spreadsheet like so: = myScriptedImportRange( GoogleClock() )
// no need to include key or range because they are in the script here
//
// the third parameter - GoogleClock() - triggers an automatic update every minute.
// updated 2011-07-17 (ahab): better regex to strip sheetname of *outer* single quotes
// updated 2013-01-27 (ben) to hard-code key and range
function myScriptedImportRange( ) {
var key = "PUT YOUR DATA_SPREADSHEET_ID IN HERE"
var sheetrange = "PUT YOUR SHEET AND CELL RANGE IN HERE"
var shra = sheetrange.split("!") ;
if (shra.length==1) shra[1]=shra[0], shra[0]="";
var sheetstring = shra[0].replace( /^'(.*)'$/g , "$1") // was: replace( /'/g , "") ; updated 2011-07-17 (ahab)
var rangestring = shra[1]
var source = SpreadsheetApp.openById( key )
if ( sheetstring.length==0 ) sheet = source.getSheets()[0] ;
else sheet = source.getSheetByName( sheetstring ) ;
return sheet.getRange( rangestring ).getValues();
}
在我的情况我有一组私人片材,即使用常规的中间片myImportRange
和VMERGE一些SQL来选择从私人片组合成的中间片材,然后,简单地具有包含一个小区中的公共片= myScriptedImportRange( GoogleClock() )
请注意,有一个类似的方法在这里: https://stackoverflow.com/a/11857014
还要注意的是, ImportRange
功能及相关的功能往往有当原点工作簿(S)是/不显示输入数据的问题是不公开的。 对此的一种简单的方法已经在这里评论进行了描述: https://stackoverflow.com/a/11786797