[英]Make custom function update cells from API call on google form submit
我創建了一個鏈接到谷歌表格的谷歌表格。 提交后,表單中的數據會更新鏈接表中的列AD。 現在我想要一個自定義腳本在提交時調用外部API並將數據從響應寫入列E.我正在嘗試調用weather API以便在用戶提交表單時記錄天氣數據。
下面是我用來從公共METAR API獲取溫度的函數,當我從打開的Google工作表文檔中的單元格調用它時,它可以正常工作。 我無法從谷歌文檔獲得的是如何在表單提交時觸發它並將其鏈接到列E和當前表單答案行。 據我所知,不可能從單元格中調用此函數,我需要以某種方式引用單元格中的單元格位置(觸發腳本+列E的行)?
function GetMETAR() {
var url = 'https://avwx.rest/api/metar/KJFK?options=&format=json&onfail=cache';
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
var tempr = data.temperature.value;
return tempr;
}
嘗試這個:
function GetMETAR(name,cell) {
var name=name || 'Sheet2';//if you don't want to use the parameters you can set these defaults
var cell=cell || 'B4';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(name);
var rg=sh.getRange(cell);
var url = 'https://avwx.rest/api/metar/KJFK?options=&format=json&onfail=cache';
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
var tempr = data.temperature.value;
rg.setValue(tempr);//cell that you want the data to go to.
}
謝謝@Cooper,這是我的最終代碼:
function GetMETAR() {
var ss=SpreadsheetApp.getActiveSheet();//set active sheet where form answers are stored
var lr = ss.getLastRow();//since form pastes last answer to last row we get its number
var rg = ss.getRange(lr,8,1,5);//here I set range where I will paste info from API CALL
var url = 'https://avwx.rest/api/metar/UUWW?options=&format=json&onfail=cache';//API url
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});//API call
var json = response.getContentText();//response JSON to text
var data = JSON.parse(json);//JSON text parse
var tempr = data.temperature.value;//parsing values
var wind_spd = data.wind_speed.value;
var baro = data.altimeter.value;
var dew = data.dewpoint.value;
var wind_dir = data.wind_direction.value;
var values = [[tempr,wind_spd,wind_dir,baro,dew]];//cobining values in array to paste
rg.setValues(values);//pasting in range
}
腳本設置為在表單提交時觸發
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.