Skip to content

Commit

Permalink
Merge pull request #11 from inVoltag/google-api-v4-migration
Browse files Browse the repository at this point in the history
Google api v4 migration
  • Loading branch information
inVoltag committed Dec 10, 2021
2 parents c9f84cd + ba86f3d commit 9cc6768
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 99 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
@@ -1,7 +1,7 @@
{
"name": "sketch-awesome-ipsums",
"description": "Generate ipsums from an external Google spreadsheet. Make these datas collaborative!",
"version": "1.0.0",
"version": "1.1.0",
"engines": {
"sketch": ">=49.0"
},
Expand Down
21 changes: 12 additions & 9 deletions src/createIpsum.js
@@ -1,35 +1,38 @@
import sketch from 'sketch';
import {getPreference, getValues, sortedData, getIpsum} from './index';
import {text, document,selectedLayers, selectedCount, canvasView, selectedArtboard, selectedPage, pluginCache} from './index';
import syncIpsum from './syncIpsum';
import { getPreference, getValues, sortedData, getIpsum } from './index';
import { text, document,selectedLayers, selectedCount, canvasView, selectedArtboard, selectedPage, pluginCache } from './index';

var ID = getPreference('spreadsheetID');
var ID = getPreference('spreadsheetID'),
SHEET = getPreference('sheetName');

function createIpsum() {

var datas = getValues(ID, 1);
var datas = getValues(ID, SHEET);
var awesomeIpsum = getIpsum(datas);
var origin = canvasView.viewCenterInAbsoluteCoordinatesForViewPort(canvasView.viewPort());
var newText = new text({
parent: selectedPage,
text: awesomeIpsum[1],
name: 'New ipsum',
style: {
alignment: 0,
borders: [],
alignment: 'left',
borders: []
},
frame: {
width: 400,
height: 400
},
fixedWidth: 2
fixedWidth: true
})

newText.frame.x = Math.floor((origin.x) - (newText.frame.width / 2));
newText.frame.y = Math.floor((origin.y) - (newText.frame.height / 2))

};

if(ID !== 'empty') {
if (ID != null || SHEET != null) {
createIpsum()
} else {
sketch.UI.alert('Synchronize first your ipsums', 'Link your Google spreadsheet via the Sync. menu')
syncIpsum()
}
54 changes: 14 additions & 40 deletions src/index.js
Expand Up @@ -16,7 +16,7 @@ export function getPreference(key) {
var userDefaults = NSUserDefaults.standardUserDefaults();
if (!userDefaults.dictionaryForKey(pluginIdentifier)) {
var defaultPreferences = NSMutableDictionary.alloc().init();
defaultPreferences.setObject_forKey('empty', key);
//defaultPreferences.setObject_forKey('', key);

userDefaults.setObject_forKey(defaultPreferences, pluginIdentifier);
userDefaults.synchronize()
Expand All @@ -41,7 +41,7 @@ export function savePreference(key, value) {

export function getValues(gsheet, sheet) {

var url = 'https://spreadsheets.google.com/feeds/list/' + gsheet + '/' + sheet + '/public/values?alt=json';
var url = `https://opensheet.vercel.app/${gsheet}/${sheet.replace(/\s/g, '%20')}`;

var request = NSMutableURLRequest.new();
request.setHTTPMethod('GET');
Expand All @@ -54,57 +54,31 @@ export function getValues(gsheet, sheet) {
var dataString = NSString.alloc().initWithData_encoding(response, NSUTF8StringEncoding);

try {
var data = JSON.parse(dataString);
return sortedData(data)
if (dataString.indexOf('{"error":"Unable to parse range:') == -1) {
return JSON.parse(dataString)
} else {
throw new Error("Something went badly wrong!")
}
} catch(e) {
sketch.UI.alert('Your spreadsheet must be public.', 'Have you read before pasting the link? 😑');
return null
sketch.UI.alert('Something went wrong with your spreadsheet', 'Check your internet connection or the sheet name');
throw new Error("Something went badly wrong!")
};

};

export function sortedData(data) {

var values = {};
data.feed.entry.forEach(function(entry) {
Object.keys(entry).filter(function(key) {
return key.indexOf('gsx$') == 0
}).forEach(function(key) {
var newKey = key.substring(4)
if (!(values.hasOwnProperty(newKey))) {
values[newKey] = []
};

var newValue = entry[key]['$t'];
if (newValue) {
var ipsum = values[newKey];
ipsum.push(newValue)
};
})
});
return values

};

export function getIpsum(datas) {

var data, size, fcolumn, scolumn, names, ipsums, name, ipsum, duo;
data = Object.keys(datas);
let size, randomIpsum, name, ipsum, duo;

fcolumn = data[0];
scolumn = data[1];
names = datas[fcolumn];
ipsums = datas[scolumn];
size = names.length;
const randomizer = Math.floor((Math.random() * size));
size = datas.length;
randomIpsum = datas[Math.floor((Math.random() * size))];

name = names[randomizer];
ipsum = ipsums[randomizer];
name = randomIpsum[Object.keys(randomIpsum)[0]];
ipsum = randomIpsum[Object.keys(randomIpsum)[1]];

duo = [];
duo.push(name);
duo.push(ipsum);

return duo

}
79 changes: 37 additions & 42 deletions src/syncIpsum.js
@@ -1,54 +1,49 @@
import sketch from 'sketch';
import {getPreference, savePreference, pluginCache} from './index';
console.log(getPreference('spreadsheetID'));

sketch.UI.getInputFromUser(
"Sync. your awesome ipsums from your Google spreadsheet",
{
description: 'Get collaborative! First publish on the Web (File > Publish on the Web), then copy the URL and paste it below 👇',
numberOfLines: 3,
initialValue: alreadySync()
},
(err, value) => {
var google = validateURL();
if (err || value.indexOf(google) == -1) {
return sketch.UI.alert('Houston, there\'s a problem 😓', 'Please, try again.')
} else {
import { getPreference, savePreference, pluginCache } from './index';

export default function syncIpsum() {
sketch.UI.getInputFromUser(
"Sync. your awesome ipsums from your Google spreadsheet (1/2)",
{
description: 'First publish on the Web (File > Publish on the Web), then copy the URL and paste it below 👇',
numberOfLines: 3,
initialValue: getPreference('spreadsheetID') == null ? '' : `https://docs.google.com/spreadsheets/d/${getPreference('spreadsheetID')}`
},
(err, value) => {
if (err) {
return
} else if (value.indexOf('https://docs.google.com') == -1 || value == undefined) {
return sketch.UI.alert('Watch your URL!', 'Copy and paste the Google spreadsheet URL from your browser bar')
} else {
var ID = getID(value);
savePreference('spreadsheetID', ID);
sketch.UI.message('The ipsums are on the track! 🔥');
console.log(getPreference('spreadsheetID'))
sketch.UI.getInputFromUser(
"Sync. your awesome ipsums from your Google spreadsheet (2/2)",
{
description: 'Type the name of the ipsums sheet (⚠️ case sensitive)',
numberOfLines: 1,
initialValue: getPreference('sheetName') == null ? '' : getPreference('sheetName')
},
(err, value) => {
if (err) {
return
} else if (value == undefined) {
return sketch.UI.alert('Cannot be empty!', 'Copy and paste the name of the sheet')
} else {
savePreference('sheetName', value);
sketch.UI.message('The ipsums are on the track! 🔥')
}
}
)
}
}
}
)
)
};

function getID(input) {

var splitURL = input.split('/');
var ID = splitURL[5];
return ID

};

function alreadySync() {

var ID = getPreference('spreadsheetID');
var google = validateURL();
var url = 'https://docs.google.com/spreadsheets/d/'+ ID;

if (ID == 'empty' || url.indexOf(google) == -1) {
return
} else {
return url
}

}

function validateURL() {

var standardURL = 'https://docs.google.com/';
var splitURL = standardURL.split('/');
var getGoogle = splitURL[2];
return getGoogle

}
14 changes: 8 additions & 6 deletions src/updateIpsum.js
@@ -1,12 +1,14 @@
import sketch from 'sketch';
import {getPreference, getValues, sortedData, getIpsum} from './index';
import {text, document,selectedLayers, selectedCount, canvasView, selectedArtboard, selectedPage, pluginCache} from './index';
import syncIpsum from './syncIpsum';
import { getPreference, getValues, sortedData, getIpsum } from './index';
import { text, document,selectedLayers, selectedCount, canvasView, selectedArtboard, selectedPage, pluginCache } from './index';

var ID = getPreference('spreadsheetID');
var ID = getPreference('spreadsheetID'),
SHEET = getPreference('sheetName');

function updateIpsum() {

var datas = getValues(ID, 1);
var datas = getValues(ID, SHEET);
if (selectedCount === 0) {
sketch.UI.message('No layers are selected')
} else {
Expand All @@ -23,8 +25,8 @@ function updateIpsum() {

};

if(ID !== 'empty') {
if (ID != null || SHEET != null) {
updateIpsum()
} else {
sketch.UI.alert('Synchronize first your ipsums', 'Link your Google spreadsheet via the Sync. menu')
syncIpsum()
}

0 comments on commit 9cc6768

Please sign in to comment.