簡體   English   中英

在 Google 表格中使用 App Script 格式化文本

[英]Format Text using App Script in Google sheet

使用 App Script,我需要轉換文本:

輸入:

POLYGON ((-111.705934405 32.76300316, -111.706191897 32.748205765, -111.706191897 32.748205765, -111.706191897 32.748205765, -111.688682437 32.748566707, -111.688939929 32.733261511, -111.655036807 32.732828307, -111.655294299 32.740914437, -111.645938754 32.740842243, -111.646024585 32.748783271, -111.654607654 32.74914421, -111.654092669 32.763291866 , -111.705934405 32.76300316))

Output:

[[{"lat":32.763597994888265,"lng":-111.70779863788822},{"lat":32.763670170794725,"lng":-111.65269533588626},{"lat":32.74887288656241,"lng":-111.65346781208255},{"lat ":32.74880069866226,"lng":-111.64479891254642},{"lat":32.741004061134866,"lng":-111.64548555805423},{"lat":32.741004061134866,"lng":-111.65424028827884},{"lat":32.73356774344866," lng":-111.65466944172123},{"lat":32.732990139407825,"lng":-111.70608202411869}]]

使用應用程序腳本。 我已經使用公式轉換了文本。 是那張紙。 多邊形可以有 200 多個點。 很難調整公式中的那些點。

並注意輸入中的緯度和經度是顛倒的。

在您的情況下,以下示例腳本如何?

示例腳本:

 const value = "POLYGON ((-111.705934405 32.76300316, -111.706191897 32.748205765, -111.706191897 32.748205765, -111.706191897 32.748205765, -111.688682437 32.748566707, -111.688939929 32.733261511, -111.655036807 32.732828307, -111.655294299 32.740914437, -111.645938754 32.740842243, -111.646024585 32.748783271, -111.654607654 32.74914421, -111.654092669 32.763291866, -111.705934405 32.76300316))"; const r1 = value.match(/\(\((.*)\)\)/); const r2 = r1[1].split(",").map(e => { const [lng, lat] = e.trim().split(" "); return { lat: Number(lat), lng: Number(lng) }; }); const res = [r2]; console.log(res);

  • 運行此腳本時,將獲得以下結果。

     [[{"lat":32.76300316,"lng":-111.705934405},{"lat":32.748205765,"lng":-111.706191897},{"lat":32.748205765,"lng":-111.706191897},{"lat":32.748205765,"lng":-111.706191897},{"lat":32.748566707,"lng":-111.688682437},{"lat":32.733261511,"lng":-111.688939929},{"lat":32.732828307,"lng":-111.655036807},{"lat":32.740914437,"lng":-111.655294299},{"lat":32.740842243,"lng":-111.645938754},{"lat":32.748783271,"lng":-111.646024585},{"lat":32.74914421,"lng":-111.654607654},{"lat":32.763291866,"lng":-111.654092669},{"lat":32.76300316,"lng":-111.705934405}]]

筆記:

  • 如果您想從示例電子表格的“A”列中檢索值,下面的示例腳本怎么樣? 在這種情況下,從您顯示的預期值來看,結果數組的每個元素都是一個二維數組。 請注意這一點。

     function myFunction() { const sheetName = "Sheet1"; const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); const values = sheet.getRange("A2:A" + sheet.getLastRow()).getValues(); const res = values.map(([a]) => { const r1 = a.match(/\(\((.*)\)\)/); const r2 = r1[1].split(",").map(e => { const [lng, lat] = e.trim().split(" "); return { lat: Number(lat), lng: Number(lng) }; }); return [r2]; }); console.log(res); }

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM