ปัญหาเกี่ยวกับการแทรกแถวโดยอัตโนมัติแล้วอ้างอิงในแท็บอื่น

ฉันใช้ Zapier เพื่อแทรกเนื้อหาภายนอกลงในแท็บ Google Spreadsheet โดยอัตโนมัติ และดูเหมือนว่าจะแทรกแถวใต้แถวสุดท้ายที่ไม่ว่างโดยตรง แทนที่จะแทนที่เนื้อหาในแถวว่างถัดไป

ดังนั้นหากแถวที่ 7 เป็นแถวสุดท้าย Zapier จะแทรกแถวใหม่ภายใต้ 7 และแถวเก่า 8 จะกลายเป็นแถวที่ 9

จากนั้น ฉันมีแท็บอื่นอีกสองแท็บ ซึ่งสามารถดูได้บนเว็บทั้งสองแท็บ (โดยที่แท็บแรกไม่ใช่) ซึ่งอ้างอิงเนื้อหาในแท็บแรก แต่เมื่อเพิ่มเนื้อหาใหม่ การอ้างอิงเหล่านี้ในรูปแบบ data!a8 ก็จะถูกย้ายเช่นกัน ถ้าฉันใช้ data!$a$8 ฉันต้องเปลี่ยน 500 แถวด้วยตนเอง

ไม่ว่าจะมีการเข้ารหัสหรือไม่ มีวิธีอนุญาตให้ Zapier แทรกแถวแต่ยังคงอ้างอิงแถวนั้นโดยอัตโนมัติหรือไม่


person Ewen    schedule 22.04.2015    source แหล่งที่มา
comment
อย่าลืมอ่านเอกสาร zapier.com /help/google-docs/ มันบอกว่าคุณไม่สามารถมีแถวว่างตรงกลางแผ่นงานได้ Zapier ยังแทรกสคริปต์ใดๆ ลงใน Google ชีตด้วย คลิกเครื่องมือ โปรแกรมแก้ไขสคริปต์ และหากมีโค้ดใดๆ โปรดแชร์ด้วย คุณอาจต้องการดู NAMED RANGES เพื่อเป็นแนวทางแก้ไขด้วย สามารถดูข้อมูลเพิ่มเติมได้ที่นี่ support.google.com/docs/answer/63175   -  person Munkey    schedule 23.04.2015
comment
ขอบคุณ @Munkey Zapier เพิ่งแทรกบันทึกใหม่ผ่าน oAuth (ไม่มีสคริปต์เพิ่ม) ตอนนี้ฉันกำลังเริ่มการทำงานของสคริปต์บนฟังก์ชัน onChange ที่ทำเคล็ดลับ และหลังจากอ่านมาหลายครั้ง ดูเหมือนว่าการเขียนสคริปต์จะเป็นวิธีเดียวเท่านั้น ฉันจะโพสต์โค้ดเวอร์ชันปรับปรุงเร็วๆ นี้   -  person Ewen    schedule 25.04.2015


คำตอบ (2)


สำหรับผู้ที่พยายามทำเช่นนี้โดยไม่มีสคริปต์ ดูเหมือนว่าเป็นไปไม่ได้

สคริปต์

  1. สร้างฟังก์ชั่นเหมือนตัวอย่างด้านล่าง โปรดทราบว่าเรากำลังอ่านชีตเดียว (AutomaticImport) และเขียนลงในชีต WebData

    function fncUpdateWebData() { var ss = SpreadsheetApp.getActiveSpreadsheet(), sheet = ss.getSheetByName("AutomaticImport"), sheetWeb = ss.getSheetByName("WebData"), arrRides = sheet.getDataRange().getValues(), row,col,iOutputRow,strURL;

    iOutputRow = 2; for ( iRow = 1; iRow < arrRides.length; iRow++) { sheetWeb.getRange(iOutputRow,1).setValue(arrRides[iRow][5]); // date strURL = '=HYPERLINK("' + 'https://www.strava.com/activities/' + arrRides[iRow][7] + '","' + arrRides[iRow][8] + '")'; sheetWeb.getRange(iOutputRow,2).setValue(strURL); // start & link sheetWeb.getRange(iOutputRow,3).setValue(arrRides[iRow][4]); // Distance sheetWeb.getRange(iOutputRow,4).setValue(arrRides[iRow][0]); // Avg Speed
    iOutputRow++; } }

    1. In Resources/Current Project Triggers and a new trigger and use your new function name, "from Spreadsheet" and select "onChange"

ฉันหวังว่าเขาจะช่วยให้คุณก้าวข้ามอุปสรรคได้

person Ewen    schedule 25.04.2015

ฉันรู้ว่านี่เป็นคำตอบที่ช้ามาก แต่ฉันประสบปัญหาเดียวกันและเกือบจะใช้วิธีแก้ปัญหาที่ได้รับการยอมรับก่อนที่จะรู้ว่ามีวิธีที่ดีกว่าและง่ายกว่ามาก

จริงๆ แล้วมันอยู่ในเอกสาร Zapier ใช่ไหม ที่นี่ วิธีแก้ไขคือสร้าง Google ชีต 2 แผ่น แผ่นหนึ่งสำหรับ Zapier และอีกแผ่นสำหรับสูตรของคุณ เชื่อมต่อ Zapier ไว้ที่แผ่นงานแรก จากนั้นใช้คำสั่ง IMPORTRANGE เพื่อคัดลอกคอลัมน์ที่จำเป็นลงในแผ่นงานที่สอง เขียนสูตรของคุณในแผ่นงานที่สอง แล้วคุณจะสังเกตเห็นว่าชั้นพิเศษของการอ้อมทำให้ Google ไม่สามารถเขียนสูตรใหม่ได้เมื่อมีการเพิ่มแถวลงในช่วงแหล่งที่มา!

Tl;dr: RTFM ตามปกติ

person zmbc    schedule 30.12.2016