今日のページを開くGAS
今日のページ(日記ページ)を開くGoogle Apps Script
リンクを踏むと、今日のページへのリンクボタンを生成するウェブアプリ
まだ今日のページが存在しない(ページに日付タグがない)なら作成し、存在するなら遷移する
https://gyazo.com/a85f7cb1f0932c551b891879c7e553ea
/programming-notes用リンク
https://script.google.com/macros/s/AKfycbyfGxckL_-VkF7apPbDGNwYsuCfU98xD-vPOHxSn4Dam_RM1Rhlw1vD/exec?projectName=programming-notes
URLの末尾に?projectName=...としてプロジェクトを指定できる
一旦リンクを表示するページを経由している
GASでリダイレクトする方法あるんだろうか
今日のページを開くDjango View作っちゃったdnin.icon
/icons/クラッカー.iconyosider.icon
コード
code:main.gs(js)
function getDate(i) {
const d = new Date();
d.setDate(d.getDate() + i);
return [${d.getFullYear()}, ${d.getMonth() + 1}, ${d.getDate()}];
}
function getUrl(projectName) {
const today = getDate(0);
const prev = getDate(-1);
const next = getDate(1);
const title = encodeURIComponent(${today[0]}/${today[1]}/${today[2]});
let url = https://scrapbox.io/${projectName}/${title};
const endpoint = https://scrapbox.io/api/pages/${encodeURIComponent(projectName)}/${title};
const dateTag = [${prev[0]}/${prev[1]}/${prev[2]}] -> [${today[0]}/${today[1]}]/${today[2]} -> [${next[0]}/${next[1]}/${next[2]}];
const res = UrlFetchApp.fetch(endpoint, {"muteHttpExceptions": true});
const json = JSON.parse(res.getContentText());
if (!json.lines || json.lines.every(line => !line.text.includes(dateTag))) {
// 日付タグが存在しない
const body = encodeURIComponent(
'\n'.repeat(6) // 書く場所
+ dateTag // 日付タグ
+ '\n' // 末尾に改行
);
url += ?body=${body};
}
console.log(url);
return url;
}
function doGet(e) {
const url = getUrl(e.parameter.projectName);
console.log(e.parameter.projectName);
console.log(url);
const html = HtmlService.createTemplateFromFile('index');
html.btn =
`<div class='container'>
<a href='${url}' class='btn'>今日のページ</a>
</div>\n`;
const output = html.evaluate();
console.log(output.getContent());
return output;
}
cf.
GASでWebページを作るときにHTMLとCSSを別ファイルに記述する方法
GASでHTMLを動的に変更する
code:index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?>
</head>
<body>
<?!= btn ?>
</body>
</html>
cf. コピペ実装!CSSだけで作れるお洒落で使いやすいボタン◉サンプルコード12選 - GrowGroup株式会社
code:css.html(css)
<style>
.container {
font-family: 'メイリオ', Meiryo, "Yu Gothic", YuGothic, Verdana, 'Hiragino Kaku Gothic ProN','Hiragino Kaku Gothic Pro', 'ヒラギノ角ゴ Pro W3', sans-serif;
text-align: center;
padding-top: 40px;
}
.btn {
display: inline-block;
max-width: 180px;
text-align: left;
background-color: #9ec34b;
font-size: 16px;
color: #FFF;
text-decoration: none;
font-weight: bold;
padding: 8px 16px 8px 32px;
border-radius: 4px;
position: relative;
}
.btn:before {
font-family: "FontAwesome";
content: "\f040";
position: absolute;
left: 16px;
top: 50%;
margin-top: -8px;
}
.btn:hover {
opacity: 0.8;
}
</style>
appsscript.json
code:appsscript.json
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"webapp": {
"executeAs": "USER_DEPLOYING",
"access": "ANYONE_ANONYMOUS"
}
}