Skip to content

Instantly share code, notes, and snippets.

@thinkle
thinkle / ShareDriveFix.js
Created June 17, 2022 11:08
Deleting and readding permissions for a group in a shared google drive in order to spark proper sharing w/ new members of the group
const GROUPADDRESS = '[email protected]'
function sharedDriveFix () {
let nextPageToken;
let count = 0;
do {
let result = Drive.Drives.list({useDomainAdminAccess:true, pageToken:nextPageToken})
result.items.forEach((i)=>{
console.log(i.name,i.id);
let nextPermPageToken
do {
Percentage of games # of guesses # of games Example words
0.05% 1 1 irate
0.76% 2 14 outer,stair,intro,triad,laser,earth,shirt,timer,trite,inert,sight,arise,image,stare
25.32% 3 468 sleet,slide,depth,roost,adore,empty,bison,apart,idyll,plate,dwell,aired,...
54.49% 4 1007 piece,setup,safer,dress,bride,bible,paint,imply,tough,baggy,ethic,shoot,upset,...
17.42% 5 322 maker,books,frill,mucky,sweet,taste,funky,ankle,puppy,honey,shook,spell,remix,quilt,...
1.89% 6 35 jolly,flown,rover,holly,molly,yummy,jerry,biker,rider,berry,vexed,wafer,wowed,joker,undid,witty,foxed,foyer,piper,wacky,mixer,pinch,joked,aging,loved,chill,diver,climb,roger,hobby,boxer,rugby,wound,woods,waxed
0.05% 7 1 tight
% of Games Guesses # of Games
0.00% 1 0
3.08% 2 57
25.60% 3 473
42.97% 4 794
20.51% 5 379
5.30% 6 98
1.52% 7 28
0.70% 8 13
0.22% 9 4
% of Games Guesses Words Guesses Total Guesses
0.00% 1 0 0 7548
3.08% 2 57 114 7548
25.60% 3 473 1419 7434
42.97% 4 794 3176 6015
20.51% 5 379 1895 2839
5.30% 6 98 588 944
1.52% 7 28 196 356
0.70% 8 13 104 160
0.22% 9 4 36 56
@thinkle
thinkle / Rescue.js
Created November 4, 2021 16:48
Classroom Ownership Rescue
/* Google Apps Script */
/* This code fixes ownership for every file in a google classroom */
/* Assumes that ownership has accidentally been transferred to the script user
(i.e. through moving a folder through a Shared Drive and back out)
*/
function rescueHosedClass (courseId) {
let course = Classroom.Courses.get(courseId);
let owner = Classroom.UserProfiles.get(course.ownerId).emailAddress;
rescueHosedMaterials(courseId, owner);
$: {
if (mainMap && lastActivities && lastActivities.length) {
console.log('Reactive map creation firing...',mainMap,lastActivities,tlat,tlon)
let n = 0
let last = lastActivities[n];
while (!last.start_latlng && n < lastActivities.length) {
n+=1;
last = lastActivities[n];
}
let coord = last.start_latlng || [0,0];
<script>
import { token } from "./stores.js";
let fetching;
// The bike list will be part of the athlete Data strava provides us...
let athleteData;
async function getAthleteData() {
fetching = true;
node_modules/*
/functions/*
# Local Netlify folder
.netlify
public/build/*
import { writable } from 'svelte/store';
let storedToken = localStorage.getItem('token');
if (storedToken) {
initialValue = JSON.parse(storedToken);
}
export const token = writable(initialValue);
import strava from 'strava-v3';
import fetch from 'node-fetch';
const STRAVA_CLIENT_SECRET = process.env.strava_client_secret;
const STRAVA_CLIENT_ID = process.env.strava_client_id;
export async function handler (event, context) {
let params = event.queryStringParameters;
let jsonBody;
if (event.body) {