iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
IT管理

「Google Apps Script」 學習筆記系列 第 5

【Day 5】Google Apps Script - 變數與函式呼叫與GS檔的順序影響

在專案裡,所有的檔案都預先被 import 在一起的,可直接呼叫其他 gs檔裡的變數與函式。gs檔在專案裡的順序會影響變數的值,所以命名上要很小心。


今日要點:
》可以直接呼叫其他 gs檔裡的變數與函式
》gs檔在專案裡的順序會影響變數的值


今天的內容蠻簡單的,主要是要提醒一個小地方,就是在專案裡,所有的檔案都預先被import在一起的,所以命名上要很小心。

我們做實驗一下,假設一個專案裡有2個 gs 檔,demo1.gs 和 demo2.gs。

實驗1 - 你寫在別的 gs 檔裡的變數與函式,可以直接呼叫它

demo1.gs

var varDemo1 = "varDemo1 這是定義在 demo1.gs 裡的變數";

function funcDemo1_1() {
  console.log('執行 funcDemo1_1() 這是定義在 demo1.gs 裡的函式');
  funcDemo2_1(); 
  console.log(varDemo2);
}

demo2.gs

var varDemo2 = 'varDemo2 這是定義在 demo2.gs 裡的變數'

function funcDemo2_1() {
  console.log('執行 funcDemo2() 這是定義在 demo2.gs 裡的函式');
}

執行結果

當你執行 demo1.gs 裡的 funcDemo1_1() 時,你會發現其實你沒有 import demo2.gs 但你可以直接使用它的變數與函式。

實驗2-1 - 如果後面的檔案也定義了相同的變數,那後面會把前面的給蓋掉

假設 demo1.gs 多一行跟 demo2.gs 相同的名稱的變數 varDemo2。
demo1.gs

var varDemo1 = "varDemo1 這是定義在 demo1.gs 裡的變數";
var varDemo2 = 'varDemo2 這是定義在 demo1.gs 裡的變數'

function funcDemo1_1() {
  console.log('執行 funcDemo1_1() 這是定義在 demo1.gs 裡的函式');
  funcDemo2_1(); 
  console.log(varDemo2);
}

demo2.gs

var varDemo2 = 'varDemo2 這是定義在 demo2.gs 裡的變數'

function funcDemo2_1() {
  console.log('執行 funcDemo2() 這是定義在 demo2.gs 裡的函式');
}

執行結果

我們在執行 funcDemo1_1(),我們可能會預期 varDemo2 應該是印出 '...在 demo1.gs 裡的變數',但實際上他會印出 '...在 demo2.gs 裡的變數'。

實驗2-2 - 把 demo2.gs 在專案的位置往上移到 demo1.gs 之前

把 demo2.gs 在專案的位置往上移到 demo1.gs 之前。

執行結果

我們在執行 funcDemo1_1(),varDemo2 就如預期是印出 '...在 demo1.gs 裡的變數'。

以上就是介紹變數及函式呼叫要小心的地方,如果命名習慣很好的話,是不太會有問題的。


上一篇
【Day 4】Google Apps Script - Hello World 建立通知單並寄送
下一篇
【Day 6】Google Apps Script - 觸發條件與簡單觸發器(Simple Triggers)
系列文
「Google Apps Script」 學習筆記30

尚未有邦友留言

立即登入留言