Because I can’t stop playing with something that already works fine, I’ve continued to tweak my syllabus-generating spreadsheet. With the addition of an external script, I’m able to link directly to a specific cell in the spreadsheet — letting me share a link to my syllabi that takes people not just to the overall document, but to the current day (or the next day that’s closest to the current day) in the syllabus. The script could be used to link to any cell in any published Google Spreadsheet, with the caveat that if there are multiple cells with that match that value, the link will take you to the first appearance of the value in the spreadsheet.
$url = $_REQUEST["url"]; $key = $_REQUEST["key"]; $anchor = $_REQUEST["anchor"]; $html = file_get_contents($url); $output = str_replace($key, "<a name="$anchor"></a>$key", $html); $output = str_replace("href='/", "href='https://docs.google.com/", $output); header("Content-Type: text/html"); echo $output;
This takes a GET URL of the format http://server/script?url=[url]&key=[key]&anchor=[anchor]#[anchor], where…
Nota Bene: You have to add your own link to the anchor — this is a quick, slapped-together connection to my script.
Update: I was sitting here staring at the script, trying to figure out why I hadn’t put the anchor tag around the key, and then I realized what’s going on. The key (on my spreadsheet) is formatted to be white text on a white background (Rothko-style, if you will). If it gets converted to an anchor, its styling is affected and (without more work in the script) it turns blue and underlined. Lame. So… the anchor goes before the key, so the key’s CSS style won’t be affected.
This is why you document your code. Even when it’s short.
Seth Battis October 31st, 2012
Posted In: How To