2012-06-21 127 views
5

我一直在玩Google Apps腳本,我正在嘗試編寫一些自定義電子表格函數。我已經做了一些搜索,但無法找到我的查詢的答案。是否可以在Google Apps腳本中執行ImportRange?

我知道,在谷歌電子表格,你可以在電子表格單元格使用IMPORTRANGE這樣的:

=ImportRange(spreadsheet_key;sheet!range_of_cells) 

我的問題是是否有可能做一個谷歌Apps腳本和類似的,如果這樣的東西,怎麼樣?

我想從另一個電子表格上的工作表導入一系列單元格(不是腳本將存在的電子表格上的工作表)。

回答

5

是的,這是完全可能的。您只需致電SpreadsheetApp.openById,然後正常獲取所需的紙張和範圍。

請看看documentationrange.getValues()range.setValues()是非常基本的GAS方法,並且描述得很好。

閱讀the tutorial以及。

+0

我知道這些功能,但我看不到我怎麼能告訴它從**另一個**電子表格中選擇範圍。也許我只是再次愚蠢。 – user1464409

+1

嗨塞爾,我冒昧地編輯你的答案,以解決他對評論的懷疑:) –

+0

@亨利克:感謝您的「編輯」,你是完全正確的,我仍然有一些進展,做一些答案格式化和'完整性'我會照顧的;-) –

1

我最近需要這樣做。這是我想出了,只是硬編碼的電子表格鍵和範圍爲亞哈的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函數和相關函數在原始工作簿打開時通常存在不顯示導入數據的問題。一個簡單的解決方法已經在這裏評論:https://stackoverflow.com/a/11786797

+0

Google時鐘功能不再適用於新的Google表格,並且不允許您將替代功能「NOW()」放入工作表內的主要功能中。它只是說加載,沒有任何反應。 – Courtney

2

看來谷歌以其無限智慧已經改變了openById和類似函數的行爲。他們不再被允許在自定義函數中使用。

請參閱https://code.google.com/p/google-apps-script-issues/issues/detail?id=5174瞭解更多詳情。

他們建議使用IMPORTRANGE作爲解決方法,但如前所述,這需要在單元格內調用。

我們的解決方案是在表單中使用IMPORTRANGE,並將採集到的數據傳遞到我們的自定義函數中,因爲數據集很小。我希望這個信息幫助!

相關問題