所以我对使用谷歌应用程序脚本完全陌生,基本上几个小时前才开始。stackoverflow也是新手,所以请原谅我的格式设置。就我的一生而言,我似乎找不到如何运行Bored API来获得20个独特的建议活动。
我还想知道如何在同一单元格列中编写If语句,如果可访问性小于或等于0.3,那么它很容易如果可达性介于0.3和0.6之间,则为中等如果它是0.6或更大,那么它就是Hard。(由于谷歌excel似乎不支持同时包含两个值的单元格(
最后,对于Day专栏,我如何写一个片段,随机建议一天做建议的活动。
问题:
- 如何使用相同的API运行20个独特的建议活动
- 如何为辅助功能编写if语句
- 如何写一个片段,随机建议一天做建议的活动
请帮助:'(
这是我使用的API链接。https://www.boredapi.com/documentation
这是我在应用程序脚本,中的当前代码
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var URL_STRING = "http://www.boredapi.com/api/activity/";
var response = UrlFetchApp.fetch(URL_STRING);
var json = response.getContentText();
var data = JSON.parse(json);
var Activity = data.activity;
var Accessibility = data.accessibility;
var Type = data.type;
var Price = data.price;
var Link = data.link;
var Key = data.key;
mainSheet.getRange('B2').setValue([Activity]);
mainSheet.getRange('C2').setValue([Accessibility]);
mainSheet.getRange('D2').setValue([Type]);
mainSheet.getRange('E2').setValue([Price]);
mainSheet.getRange('G2').setValue([Link]);
mainSheet.getRange('H2').setValue([Key]);
}
这是SS的样子,Excel SS
要回答第一个问题,请使用while
循环、Array.includes()
、Array.forEach()
、Array.push()
,最后使用Range.setValues()
,如下所示:
function append20UniqueActivities() {
const sheet = SpreadsheetApp.getActive().getSheetByName('MAIN');
const URL_STRING = 'http://www.boredapi.com/api/activity/';
const numActivities = 20;
const fields = ['activity', 'accessibility', 'type', 'price', 'link', 'key'];
const result = [];
const activities = [];
while (true) {
const response = UrlFetchApp.fetch(URL_STRING);
const json = response.getContentText();
const data = JSON.parse(json);
if (activities.includes(data.activity)) {
continue;
}
activities.push(data.activity);
const row = [i];
fields.forEach(field => row.push(data[field]));
result.push(row);
if (result.length >= numActivities) {
break;
}
}
const lastRow = sheet.getLastRow();
sheet
.insertRowAfter(lastRow)
.getRange(lastRow + 1, 1, result.length, result[0].length)
.setValues(result);
}