2021/01/24

儀式感

「儀式是什麼?」小王子問道。

狐狸說:「它就是使某一天與其他日子不同,使某一時刻與其他時刻不同。」


儀式感

 

從日劇-不能結婚的男人-說起

我認為桑野信介的生活充滿了儀式感

這也可能是他看起來奇怪的原因

看完整部劇之後

也不能說他是從心底排斥結婚

反而更重視的是兩個人相處的契合

只是不結婚,但不是反對談戀愛

 

每一集(第一季最明顯)都可以看到他生活中的儀式

2021/01/23

網站 / 套用模板製作RWD網路相簿

最近結束成果分享會,拍了許多照片

原本想用Google相簿提供照片給參與人員瀏覽與下載

但是,Google相簿只能透過分享的方式

也同時會開放權限給其他使用者

不符合我的需求

因此,決定將照片上傳到學校網頁空間

並且做成RWD(Responsive Web Design)的樣式

ThemeWagon Team

找到一個簡單且符合需求的模板-Multiverse – Free HTML5 Photography Website Template

刪除不需要的內容之後

接下來是資料處理

首先要將照片圖檔分成小圖,跟大圖

這樣才能節省載入時間,並且配合點小圖放大圖的燈箱效果

又因為,我同時用2台相機拍照

照片檔名的命名前綴不同,而且為了處理html時方便統一處理,必須要重新命名

只是修改檔名的程式卻無法使用拍攝時間排序

所以先在資料夾將檔案全選,在第一個檔案按右鍵-重新命名

檔案名稱就會變成 XX(1)~~XX(N)

這樣就可以用批次修改檔名的程式將不需要的字串用空白取代

之後再把原始圖檔縮成適當尺寸的大圖與瀏覽用的小圖

接下來是處理網頁的html

因為照片有125張,不可能一個一個輸入網址

而且學校的網頁空間只允許靜態網頁,也不能用連結資料庫的方式

所以透過Excel 整理與串接html程式碼的字串,之後再一次貼上

這時候遇到的難關是–如何在Excle的公式的字串裡再串接雙引號

萬事拜Google大神

解答是: 2個 ” 等於 1個 ” ,由於前後又各有1個 “包起來成為字串,所以在公式中會變成=“”

因此,html程式碼改成Excel字串必須分清楚哪個是Excel的字串符號,哪個是html的雙引號

 

之後將html貼入模板之中就大功告成

不過,後來還是有微調一些設定

1.在圖檔的彈出視窗,增加”DOWNLOAD”的功能,可以直接下載而不是開新視窗,並且讓下載的圖檔是原始圖檔

這必須在 a 標籤內增加一個 download的參數

2.原本的模板在手機瀏覽時,文字標籤會被隱藏,修改CSS取消隱藏


 
3.原本的模板,照片是沒有間隔的,所以修改CSS增加框線

最後呈現的樣式

 

參考

[發問] 雙引號的問題

HTML 超連結 <a> 標籤 (tag)

2021/01/10

Gg / 透過Google sheets(試算表)寄信

透過Google sheets(試算表)寄信

是將試算表當作資料來源

結合執行 Google Apps Script的功能

經過測試,一般的帳號似乎是無法使用

但是用G-Suite的帳號就可以使用

→後來發現是我個人帳號的問題,改用其他一般帳號就正常

按照範例就可以執行

可以依照自己的需求來修改

我修改了以下程式碼:

第7行–選取的列數

第9行–儲存格的範圍,對應試算表是A2到C2

需要留意的是 numRow是指從startRow開始取幾列

getRange(row, column, numRows, numColumns)的用法

numRows → The number of rows to return.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
/**
* Sends emails with data from the current spreadsheet.
*/
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 3);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i in data) {
  var row = data[i];
  var emailAddress = row[0]; // First column
  var message = row[1]; // Second column
  var subject = row[2];//mail subject
  MailApp.sendEmail(emailAddress, subject, message);
  }
}

 

測試結果是OK的,收得到信

 

整理一下使用到的程式碼

javascipt是物件導向程式設計語言,建立物件之前必須先定義物件的規格形式,稱為『類別 (class)』,也就是先定義好這個物件長什麼樣子以及要做哪些事情。定義類別的樣式,稱為 『屬性 (Properties)』,要做的事或提供的方法,稱為『方法 (Methods)』。

SpreadsheetApp.getActiveSheet()

SpreadsheetApp-classs

Access and create Google Sheets files.

getActiveSheet()-Methods

Gets the active sheet in a spreadsheet.

備註:相對於excel,sheet就是工作表、spreadsheet是工作簿

getRange(row, column, numRows, numColumns)

Sheet-Class 的Methods

Returns the range with the top left cell at the given coordinates with the given number of rows and columns.

getRange(row, column, numRows, numColumns)

rowIntegerThe starting row index of the range; row indexing starts with 1
columnIntegerThe starting column index of the range; column indexing starts with 1
numRowsIntegerThe number of rows to return
numColumnsIntegerThe number of columns to return

 

getValues()

Sheet-Class 的Methods

Returns the rectangular grid of values for this range.
Returns a two-dimensional array of values, indexed by row, then by column.

備註:什麼是二維陣列:

一維陣列使用陣列名稱與一個索引值來指定存取陣列元素,例如:a[0]=(“123”),在陣列a的第一個位置放入123

二維陣列使用陣列名稱與兩個索引值來指定存取陣列元素,例如:b[0][1]=(“456”),在陣列b的第一列第二欄/行的位置放入456

第一個[ ]是列(Row) ;第二個[ ]是欄或行(Column);[i][j] ,表示要存取 i 列 j 行的元素。

 

sendEmail(recipient, subject, body)

MailApp-class的Methods

recipientStringthe addresses of the recipients, separated by commas
subjectStringthe subject line
bodyStringthe body of the email

 

參考資料

Google Apps Script的說明

Tutorial: Sending emails from a Spreadsheet

Youtube-利用 Google 試算表寄信給一群人