我有兩個腳本在不同的域,我想從一個到另一個提取數據。Google Apps腳本執行API
我們發現腳本執行API很有用,但是他們沒有提供任何示例GAS給GAS。 https://developers.google.com/apps-script/guides/rest/quickstart/target-script
有關如何完成此類事情的任何建議/指導?
我有兩個腳本在不同的域,我想從一個到另一個提取數據。Google Apps腳本執行API
我們發現腳本執行API很有用,但是他們沒有提供任何示例GAS給GAS。 https://developers.google.com/apps-script/guides/rest/quickstart/target-script
有關如何完成此類事情的任何建議/指導?
是的,你可以使用Execution API從一個域獲取數據到其他域。從文檔中,它由一個腳本資源組成,它具有一個方法run
,可以調用特定的Apps腳本函數。
run方法必須給出以下信息調用時:
- 的ID of the script被調用。
- name of the function要執行的腳本內。
- 函數需要的參數列表(如果有的話)。
這裏是GitHub一個例子:
var script = google.script('v1');
var key = require('./creds.json');
var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/spreadsheets'], null);
jwtClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
}
script.scripts.run({
auth: jwtClient,
scriptId: 'script-id',
resource: {
function: 'test',
parameters: []
}
}, function(err, response) {
if (err) {
throw err;
}
console.log('response', response);
})
});
您還可以檢查此related SO question如何使用谷歌Apps腳本API執行和Javascript使網站和谷歌驅動器之間的相互作用。
這個答案可能會有幫助。我所做的是創建了一個雲平臺項目並創建了兩個獨立項目,一個包含調用腳本,另一個包含您想調用的方法,並且必須將其部署爲API可執行文件。
重要事項:這兩個項目都必須與雲平臺項目相關聯。
要將項目與Cloud Platform項目相關聯,請在腳本編輯器中執行此操作,資源 - >雲平臺項目。你會看到有輸入框的佔位符的對話框在這裏輸入項目編號,這裏把雲平臺的項目編號和其他項目也一樣。
現在,我已經按照谷歌執行API的快速入門教程。我有一個目標腳本(包含你的方法腳本)如下:
/**
* The function in this script will be called by the Apps Script Execution API.
*/
/**
* Return the set of folder names contained in the user's root folder as an
* object (with folder IDs as keys).
* @return {Object} A set of folder names keyed by folder ID.
*/
function getFoldersUnderRoot() {
var root = DriveApp.getRootFolder();
var folders = root.getFolders();
var folderSet = {};
while (folders.hasNext()) {
var folder = folders.next();
folderSet[folder.getId()] = folder.getName();
}
return folderSet;
}
注:此腳本必須部署爲可執行的API。在項目中,您必須啓用Google執行API。
現在調用腳本,
function makeRequest(){
// DriveApp.getRootFolder();
var access_token=ScriptApp.getOAuthToken();
var url = "https://script.googleapis.com/v1/scripts/{YourScriptId}:run";
var headers = {
"Authorization": "Bearer "+access_token,
"Content-Type": "application/json"
};
var payload = {
'function': 'getFoldersUnderRoot',
devMode: true
};
var res = UrlFetchApp.fetch(url, {
method: "post",
headers: headers,
payload: JSON.stringify(payload),
muteHttpExceptions: true
});
Logger.log(res);
}
在裏面的功能,你可以看到我有註釋掉驅動器API調用第一線。我這樣做是因爲調用腳本和目標腳本必須具有相同的範圍。
作爲一般規則,你應該已經發布了一些你已經嘗試過的東西。 現在,ontopic,在這裏:https://developers.google.com/apps-script/reference/drive/drive-app你可以找到關於如何使用驅動器的文檔 如果我理解正確,你想訪問文件夾從另一個帳戶.. 如果是這種情況使用此https://jsfiddle.net/6da2oboe/會讓你列出你有權查看的所有文件夾。我試了一下,它的工作原理。你只需要有閱讀權利。 也許你應該細化一下,以更「可讀」的方式查看它們 –
這是我以前試過的:http://stackoverflow.com/questions/38999993/two-scripts-different-domains-merge -數據 –